20240219

귤금·2024년 2월 19일

Node.js 4기 TIL

목록 보기
38/86

Today?

Node.js 심화주차 1주차

Jest

테스트용 라이브러리

    "test": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --forceExit",
    "test:silent": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --silent --forceExit",
    "test:coverage": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --coverage --forceExit",
    "test:unit": "cross-env NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest __tests__/unit --forceExit"

스크립트에 이렇게 지정해놓고 yarn test 같은 식으로 출력했다.

Jest CLI 옵션

  • --forceExit : 테스트 완료시 강제로 Jest 종료
    • express의 app 객체와 프리즈마가 연결된 상태로 남아있어서 테스트 코드가 종료되지 않을 때 사용
  • --silent : 테스트 코드 실행시 console.log 같은 메시지 출력 x
  • --coverage : 테스트 코드 커버리지 출력
  • --verbose
    • 개별 테스트 결과 출력

Jest 문법

expect 결과값 검증하기

  • .mockReturnValue(value)
    • Mock 함수의 반환값 지정
  • .toBe(value)
  • .toEqual(value)
  • .toMatch(regexp | string)

Mocking?

repository라는 클래스의 테스트 코드를 테스트할 때 프리즈마를 모킹할 수 없는 문제가 발생
-> 외부에서 class를 생성할 때 이 클래스를 생성하는 동시에 안의 prisma를 다른 걸로 대체(변경)하는 것...

왜 변경하는데ㅠㅠ?

그래서 클래스에서 직접 프리즈마 클라이언트를 참조하지 않고, 외부에서 프리즈마 클라이언트를 주입받아 사용하도록 변경하여야 함. 이걸 의존성 주입(Dependency Injection)이라고 함.

생성자 주입(Constructor Injection)을 사용하여 의존성 주입을 해보자.


개인과제

회고

0개의 댓글