본문 바로가기
반응형

전체글622

WebStorm (IntelliJ IDEA) 에서 this.cliEngineCtor is not a constructor 이슈 발생시 (feat. ESLint 8.0) ESLint 8.0 이상 버전을 사용할 경우 기존에 사용중인 WebStorm, IntelliJ 등에서 다음과 같이 에러가 발생하곤합니다. TypeError: this.cliEngineCtor is not a constructor 아래 로그를 보시면 this.cliEngineCtor is not a constructor 내용을 볼 수 있는데요. TypeError: this.cliEngineCtor is not a constructor at ESLintPlugin.invokeESLint (/Users/seojeong-kuk/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/211.7628.25/WebStorm.app/Contents/plugi.. 2022. 3. 13.
테스트코드에서 Optional chaining(?.) 쓰지않기 여러 포스팅에서 언급한것처럼 테스트 코드는 빠르게 실패를 파악할 수 있어야 한다. 그런면에서 Optional chaining(?.) 은 테스트코드에 적합하지 않다. MDN의 설명을 가져오면 Optional chaining(?.)은 체이닝 연산자(.) 와 유사하게 작동하지만, 만약 참조가 nullish (null 또는 undefined)이라면, 에러가 발생하는 것 대신에 표현식의 리턴 값을 undefined로 반환한다. 따라서 참조가 누락될 가능성이 있는 경우 연결된 속성으로 접근할 때 더 짧고 간단한 표현식이 생성된다. 어떤 속성이 필요한지에 대한 보증이 확실하지 않는 경우 객체의 내용을 탐색하는 동안 도움이 될 수 있다. 안정적으로 객체 탐색이 가능하기 때문에 프로덕션 코드에서는 적극적으로 사용하는 편.. 2022. 3. 8.
조건부 (if~else) 로직 테스트코드에서 사용하지 않기 테스트 코드는 프로젝트의 생명 주기 보다 길때가 많다. 기존의 요구사항을 정리한것이 테스트 코드이기 때문에, 메인 코드보다 훨씬 더 읽기쉬워야만 한다. 만약 테스트 코드가 복잡한 경우 어떻게 작동하는지 이해하기가 어렵다. 그래서 테스트 코드는 주석이 필요 없을 정도로 간단해야 한다. 그런면에서 조건부 (if ~ else) 테스트 로직은 테스트를 실제보다 더 복잡하게 만드는 요인 중 하나다. 이번 글에서는 조건부 로직을 테스트에서 사용한 경우에 어떻게 개선할 수 있을지 알아본다. 1. 가변 결과를 검증하는 경우 1-1. 문제 첫번째 문제는 다음과 같이 테스트 실행때마다 결과가 달라지는 경우이다. it('[Bad] 가변결과 검증', () => { const now = LocalDateTime.now(); c.. 2022. 3. 7.
Github 기능 미리 써보기 (Code Review시 디렉토리 미리보기) Github 에는 앞으로 출시할 기능 (Beta) 을 미리 써볼 수 있는 옵션이 있습니다. 특히 최근에 Pull Request시 파일 트리를 볼 수 있는 기능이 베타 출시되었는데요. 코드리뷰시에 굉장히 큰 도움을 주기 때문에 바로 적용해서 써보시는 것을 추천드립니다. 이 포스팅은 2022.03.05에 작성된 것이기 때문에, 소개되는 베타기능들은 이후에 대부분 정식 출시된 상태일 것입니다. 설정 Github 우측 상단의 프로필 아이콘을 클릭하신뒤, Feature preview를 선택합니다. 그럼 아래와 같이 Modal이 나오는데, 이때 원하시는 베타 기능들을 선택하시고 Enable 을 누르시면 됩니다. (Enable을 클릭하면 아래와 같이 Disable로 버튼이 변경됩니다.) 저는 여기서 Command P.. 2022. 3. 5.
루비콘 프로젝트 (랠릿 오픈 프로젝트) 소감 랠릿 서비스 를 오픈하고 참여자들의 개인 소감을 다들 작성하는 시간을 가졌다. 실제 프로젝트의 프로세스 방식, QA 방식등을 전체적인 회고는 내일 (2022.03.02) 진행할 예정인데, 그 전에 각자 어땠는지 소감을 작성하는 시간을 2월에 가졌다. 이번 글은 사내에 공유한 소감글을 블로그로 옮겼다. 루비콘 프로젝트에서 진행한 프로젝트 방식 / 백엔드 프로젝트 방식 등은 TF 회고가 끝나고 올라갈 예정이다. 이건 프로젝트에 참여한 개인적인 짧은 생각들만 정리했다. 프로젝트 구성원들의 전체 소감은 3월안에 링크로 공유될 예정이다. 일정 프로젝트는 7월에 시작되어, 1월 27일에 정식 오픈하였다. 중간 투입된 분들은 잘 모르실 수 있지만, 초기에 대표님과 PO 1분이 같이 사용자 스토리 잡는 것이 7월부터였.. 2022. 3. 1.
Promise.all 과 Transactions (feat. Node.js) 최근 팀에서 코드리뷰를 진행하던 중에 promise.all 과 트랜잭션에 대해 오해하고 있는 부분들을 발견하게 되어 정리하게 되었습니다. Promise.all (혹은 allSettled)을 사용하면 트랜잭션 내에서도 비동기로 여러 작업들이 동시에 이루어질 수 있다고 오해하는 것인데요. 실험을 해보면 그게 아니라는 것을 알 수 있습니다. 실제 코드를 가지고 검증해보겠습니다. 모든 실험 결과에 대해서 틀린 내용이 있다면 바로 댓글로 지적해주세요! 모든 지적은 저의 성장에 많은 도움이 되기 때문에 감사한 마음으로 수정하겠습니다 :) 0. 테스트 환경 테스트할 환경은 다음과 같습니다. Node.js 16.3.1 PostgreSQL 13.2 모든 코드는 Github 에 있습니다. 1. Promise.all 먼저 .. 2022. 2. 28.

728x90
반응형