Jest
npm install jest --save-dev
- 설치 후 package.json의 test 부분을 jest로 변경
matcher
toBe : 값이 정확하게 일치하는지 테스트할 때 사용
toEqual / toStrictEqual : 객체나 배열을 비교할 때는 재귀적으로 돌면서 비교해야하기 때문에 toEqual을 사용하고 보다 엄격한 체크를 위해서(깊은 비교)는 StrictEqual을 사용
toBeNull : null 에만 일치
toBeUndefined : undefined에만 일치
toBeDefined : defined
toBeTruthy : true 와 일치
toBeFalsy : false와 일치
toBeGreaterThan : 크다
toBeGreaterThanOrEquel : 크거나 같다
toBeLessThan : 작다
toBeLessThanOrEqual : 작거나 같다
toBeCloseTo : 소수점 비교 시 값이 가까운지 근사치인지 비교. ex) 0.1 + 0.2 toBe로 테스트한다고 해서 0.3 안 나옴
toMatch : 정규식으로 문자열 비교
toContain : 배열에서 특정요소가 있는지 비교
toThrow: 예외를 체크하기 위해 사용, toThrow 인수에 무슨 에러인지 추가해주면 구체적인 에러비교도 가능
그 외 기타등등등 matcher
비동기코드 테스트하는 방법
- done이라는 콜백함수를 test 구문 함수 인수로 추가해주고, 예정된 callback 함수에서 done()를 실행
- Promise를 사용하는 경우
- resolves, rejects matcher 사용
- async, await를 사용
테스트 전/후 작업
beforeEach() : 각 테스트 직전에 실행
afterEach() : 각 테스트 직후에 실행
beforeAll() / afterAll()
.only() 를 붙이면 해당 테스트만! 실행 / .skip()을 붙이면 테스트 제외
Mock 함수
XXX.mock.calls : mock 함수가 몇번 호출되었는지 호출될 때 인수는 무엇이었는지 배열로 들어있음
XXX.mock.results : mock 함수의 리턴된 결과가 배열로 저장되어 있음
XXX.mock.resolvedValue : 를 사용해서 값을 세팅하면 비동기 함수를 흉내낼 수 있음.
jest.mock('대상함수') : 대상함수를 mock함수로 바꿔줌 -> mocking module. 실제로 함수가 동작하지는 않지만