오늘 읽은 범위
3장 단위테스트
책에서 기억하고 싶은 내용을 써보세요.
테스트 구성 요소
- 테스트는 jest가 제공하는 test함수로 정의
- 테스트함수에는 검증값이 기댓값과 일치하는지를 검증하는 단언문을 작성.
- 단언문 :
expect 함수와매처(matcher)로 구성 - test함수는 중첩 불가, describe는 중첩 가능
test(테스트명, 테스트함수)
describe('사칙연산', () => {
describe('add', () => {
test('1+1은 2', () => {
expect(add(1, 1)).toBE(2);
})
})
})조건 분기
- 사양이 복잡할수록 조건 분기에 버그가 많이 생기므로 주의
에지 케이스와 예외 처리
- 타입 스크립트로 입력값 제약 설정
- 예외 발생시키기 :
toThrow매처로 검증 - instanceof 연산자를 활용하여 발생한 에러가 특정 클래스인지 확인 가능
expect(예외가 발생하는 함수).toThrow();
expect(() => add(100, -10)).toThrow(RangeError);용도별 매처
- 진리값 검증 : toBeTruthy, toBeFalsy, toBeNull, toBeUndefined
- 수치 검증 : toEqual, toBeGreaterThan, toBeGraterThanOrEqual, toBeLessThan, toBeLessThanOrEqual
- 문자열 검증 : toContain, toMatch(정규표현식), toHaveLength, stringContaining, stringMatching
- 배열 검증 : toContain, toHaveLength, toContainEqual, arrayContaining
- 객체 검증 : toMatchObject, toHaveProperty, objectContaining
비동기 처리 테스트
NOTE
- 비동기 처리가 포함된 부분을 테스트할 때는 테스트 함수를 async 함수로 만든다.
- resolve, reject가 포함된 단언문을 await한다.
- try-catch문의 예외 발생을 검증할때는 expect.assertions를 사용한다.
- promise를 반환하는 방법
- then에 전달할 함수에 단언문을 작성
- resolves 매처를 사용하는 단언문을 return
- async/await를 활용하는 방법
- 테스트 함수를 async 함수로 만들고 promise가 완료될 때까지 기다리는 방법
- promise가 완료된 것을 기다린 뒤 단언문을 실행
- reject 검증
- Promise를 return
- rejects매처를 사용하는 단언문을 활용 → 단언문을 return하거나 async/await사용
- try-catch문 활용
- 테스트 결과가 기댓값과 일치하는지 확인
- 실행하고 싶은 단언문에 도달하지 못한 채로 성공하며 종료되는 경우 → expect.assertions를 호출
- expect.assertions : 실행되어야하는 단언문의 횟수를 인수로 받아 기대한 횟수만큼 단언문이 호출되었는지 검증
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
jest의 기본 문법을 배울 수 있는 챕터였다. 매처가 이렇게 많은 줄 몰랐는데 상황에 따라서 잘 사용하는게 중요할 것 같다. 비동기 부분은 promise를 사용하는법, async 사용하는 법 등이 다양했는데 언제는 단언문을 return 해야하고, 어떤건 또 안해도 되고 그래서 좀 헷갈렸다. 쓰는 일이 많을지도 잘 모르겠다. 나오면 그때 다시 공부하는 걸로.
