npm i jest supertest -D
jest.config.js
파일을 정의하거나, CLI 환경에서 추가적인 옵션을 설정하여 커버리지를 출력하거나, 실시간 모니터링 등 다양한 기능을 사용할 수 있습니다.
→ Jest Config에 대해 자세히 알고 싶다면 여기를 클릭하세요!
// jest.config.js
module.exports = {
// 해당 패턴에 일치하는 경로가 존재할 경우 테스트를 하지 않고 넘어갑니다.
"testPathIgnorePatterns": ["/node_modules/"],
// 테스트 실행 시 각 TestCase에 대한 출력을 해줍니다.
verbose: true,
}
Jest CLI는 테스트 코드를 검사할 때 추가적인 옵션을 설정하여 원하는 결과값을 도출할 수 있도록 만들어줍니다.
예를 들어서 테스트 코드의 실시간 모니터링을 진행하거나, 결과값을 별도의 파일로 생성하거나, 테스트 코드의 커버리지를 확인하는 등 다양한 옵션을 설정할 수 있다.
// package.json
{
...
"scripts": {
...
"test": "NODE_ENV=test jest --forceExit",
"test:silent": "NODE_ENV=test jest --silent --forceExit",
"test:coverage": "NODE_ENV=test jest --coverage --forceExit",
"test:unit": "NODE_ENV=test jest __tests__/unit --forceExit",
"test:integration": "NODE_ENV=test jest __tests__/integration --forceExit"
},
...
}
→ Jest CLI Option에 대해 자세히 알고 싶다면 여기를 클릭하세요!
--forceExit
app
객체와 Sequelize 연결이 Connect
상태로 남아있어 테스트 코드가 종료되지 않을 때 사용합니다.--silent
console.log
와 같은 메시지를 출력하지 않습니다.--coverage
**--coverage
설정을 하지 않은 경우****--coverage
설정을 한 경우**--verbose
테스트 코드의 개별 테스트 결과를 표시해줍니다.
**--verbose
옵션 설정을 하지 않은 경우****--verbose
옵션 설정을 한 경우**test()
를 기준으로 결과값이 출력됩니다.expect 결과값 검증하기
**.toBe(value)**
.toEqual(value)
.toMatch(regexp | string)
.toBeTruthy()
True
인지 검증합니다..toBeInstanceOf(Class)
.toHaveProperty(keyPath, value?)
.toMatchObject(object)
Global Jest 문법
**afterAll(fn, timeout)**
test()
가 완료된 이후에 수행됩니다.**afterEach(fn, timeout)**
test()
가 완료된 이후에 수행됩니다.**beforeAll(fn, timeout)**
**beforeEach(fn, timeout)**
test()
가 실행되기 전에 수행됩니다.beforeAll
at Object.<anonymous> (test/jest-grammars/before-after.spec.test.js:1:45)
beforeEach
at Object.log (test/jest-grammars/before-after.spec.test.js:3:26)
test
at Object.log (test/jest-grammars/before-after.spec.test.js:6:24)
afterEach
at Object.log (test/jest-grammars/before-after.spec.test.js:4:25)
...
afterAll
at Object.log (test/jest-grammars/before-after.spec.test.js:2:24)
Mock
이란특정 Method
를Mocking
하기 위해 사용
테스트 코드에서 특정 코드를 실행하지 않고, 원하는 부분만을 테스트하고 싶을 때 실제로 존재하는 값처럼 사용할 수 있도록 만들어놓은 가짜 객체
Repository가 사용하는 DB를 Mocking하게 되었을 경우,
실제 DB에 접근하지 않고도 특정한 값이 입력되었을 때 어떤 결과가 나오는지 임의로 설정하여 DB에 접근했을 때와 동일한 상황을 예상하여 코드를 작성할 수 있게 된다.
또한 Mock된 객체의 특정한 Method가 몇번 호출되었는지, 어떤 값을 전달받았는지, 전달받은 데이터의 형식은 내가 생각한것이 맞는지 등 다양한 조건을 검사할 수 있다.
자주 사용하는 Mock expect 문법