[TDD] jest 설치 & 설정

김지원·2021년 8월 27일

tdd

목록 보기
1/3
post-thumbnail

javascript 테스트 코드를 작성하도록 도와주는 프레임워크는 여러가지가 있다. 예를 들어 Mocha, Chai, Jest 등등이 있는데 거기서 Jest를 이용해보자

1. 설치 방법

필자는 express & typescript로 구성되어있다!

일단 필요한 라이브러리들을 설치해준다.

npm i --save-dev jest supertest ts-jest @types/jest node-mocks-http

supertest같은 경우는 통합 테스트용
node-mocks-http는 단위 테스트용이다.

차차 알아가보도록 하자


2. 설정

1. package.json

  • 일단 test를 하기 위해서는 package.json에서 script부분에 "test": "jest --detectOpenHandles --forceExit"을 입력해준다.

--detectOpenHandles: 비동기방식으로 jest를 운영할 때 테스트는 끝났지만 계속 실행되고 있는 작업을 볼 수 있다.
--forceExit: jest는 test가 끝나도 바로 멈추지 않고 유지된다. 그래서 테스트가 끝나면 강제로 나가게 하는 옵션이다.

2. jest.config.js

다른 사람들은 ES6를 ES5로 변환하기 위해 babel을 이용했지만 필자는 typescript에 바로 jest를 할것이기 때문에 jest.config.js만 둘 것이다.

이 설정은 package.json에 해주어도 무관하다!

위치는 app.ts와 같은 위치에 두면 된다!

module.exports = {
  testEnvironment: "node",
  bail: true,
  verbose: true,
  testRegex: "(/tests/.*[.](test|spec))\\.(ts|tsx|js)$",
  moduleFileExtensions: ["js", "json", "jsx", "ts", "tsx", "json"],
  transformIgnorePatterns: ["<rootDir>/node_modules/"],
  coveragePathIgnorePatterns: ["/node_modules/"],
  transform: { "^.+\\.ts$": "ts-jest" },
  globals: { "ts-jest": { diagnostics: true } },
};
  • testEnvironment: 말그대로 테스트 환경이고 node로 되어있다.
  • bail: Jest는 기본적으로 모든 테스트를 끝내고 오류를 보여주지만 true값을 해두면 1번 실패하면 그 즉시 멈추고 오류를 보여준다. 숫자로 구성해도 된다.
  • verbose: 실행 중에 각 개별 테스트를 보고해야하는 여부(기본값은 false)
  • testRegex: 테스트 파일을 감지하는데 사용하는 패턴 (정규표현식으로 구성해야한다.)
  • moduleFileExtensions: 모듈을 사용하는 파일 확장자의 배열로 Jest가 왼쪽부터 찾습니다.
  • transformIgnorePatterns: <rootDir>을 두어 프로젝트의 루트 디렉터리에 대한 경로를 포함해서 다른 환경의 모든 파일을 실수로 무시하지 않도록 해주는 옵션
  • coveragePathIgnorePatterns: 코드의 적용 범위를 알려준다.
  • transform: 아직 지원하지 않는 언어 기능을 사용하기 위해 여러 컴파일러 중 하나를 선택할 수 있다. 필자는 ts-jest를 선택했다.
  • globals: 모든 테스트 환경에서 사용할 수 있는 전역 변수들의 집합

여기까지가 tdd를 위해 jest를 설치하고 설정하는 법이었다.
설정방법은 정말 많아서 많이 혼란스럽고 어려웠지만 자신에게 맞는 설정방법을 다들 찾길 바란다!


참고

profile
backend-developer

0개의 댓글