TIL 2023-04-29

오성인·2023년 4월 29일
0

TIL

목록 보기
20/66
post-thumbnail

1. 오늘 겪은 문제

  1. 유닛, 통합 테스트

2. 해본 시도

  1. jest를 통해서 유닛, 통합 테스트 코드를 작성했다. 유닛 테스트 같은 경우에는 repository레이어에 의존성을 주입하고 mock라는 가짜객체를 통해서 실제 DB에 영향을 주지 않고 테스트 가능하도록 작성했다. 통합 테스트는 config.js 파일에서 새롭게 test db를 생성해주고 해당 db를 통해서 통합 테스트를 진행하도록 작성하였다.
  2. 중간 중간 migration 파일이나 model 파일에 있는 오타나 삭제하지 않은 관계에 대한 코드들 때문에 찾기 힘든 에러들이 발생했으나, 늘 그렇듯 에러를 차근차근 읽고 콘솔 찍어보며 해결했다. 테스트 하기 전에 꼭 잘 되어 있는지 확인하자.

3. 해결 방법

  1. 결국 내가 이렇게 동작할 것이다. 라고 생각하고 작성한 코드들이 실제로도 그렇게 동작하는 지 확인하는 과정이기 때문에 내가 예상하는 인풋, 아웃풋을 만들어서 잘 나오는지 확인한다고 이해하면 좀 마음이 편했다. mocking의 경우 jest.fn() 함수를 사용해서 가상 함수, 객체등을 만들어서 구현할 수 있고, 통합 테스트의 경우는 config 파일에서 test-db를 설정해주고, node의 환경변수를 통해서 test-db를 사용하겠다고 지정해 준 후에 단위 테스트 시작시 sequelize-sync 함수를 통해서 모델에 맞는 db를 생성하고, 종료시에도 똑같이 작성하여 test-db를 초기화 해주는 방식으로 구현할 수 있다.

4. 새롭게 알게 된 점

  • 통합 테스트 도구인 supertest 모듈에는 test의 맥락, 시나리오를 기억해서 과정 과정을 잘 수행하는 지 테스트 할 수 있는 agent(요원)이 존제한다. 좀 신기했다.
  • 테스트를 수행한 후에 해당 결과를 자동 문서화 해주고나, 자동 시각화 해주는 툴이 있으면 이게 참 좋을 것 같다고 생각했는데 Mocha 같은 경우에는 Mocha-awsome이라는 문서화 툴이 있다고 한다. jest는 아직 못 찾았는데 좀 더 찾아볼 계획이다.

5. 오늘 더 효율적으로 일할 수 있었을 것 같은 방법은?

  • 없음~
profile
기여하는 개발자

0개의 댓글