본문 바로가기
반응형

전체글587

Jest로 Error 검증시 catch 보다는 expect Jest를 통한 테스트를 작성하다보면 Exception에 대한 검증을 작성해야할 때가 있다. 이럴때 보통 2가지 방법 중 하나를 선택한다. try ~ catch expect.rejects.toThrowError 실제 코드로는 다음과 같다. // try ~ catch it("[try/catch] 주문금액이 -이면 BadParameter Exception 을 던진다.", async () => { try { await acceptOrder({amount: -1000}); } catch (e) { expect(e).toBeInstanceOf(BadParameterException); expect(e.message).toBe('승인 요청 주문의 금액은 -가 될 수 없습니다'); } }); // expect it(.. 2022. 3. 18.
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.

728x90
반응형