오늘 읽은 범위

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를 반환하는 방법
    1. then에 전달할 함수에 단언문을 작성
    2. resolves 매처를 사용하는 단언문을 return
  • async/await를 활용하는 방법
    1. 테스트 함수를 async 함수로 만들고 promise가 완료될 때까지 기다리는 방법
    2. promise가 완료된 것을 기다린 뒤 단언문을 실행
  • reject 검증
    1. Promise를 return
    2. rejects매처를 사용하는 단언문을 활용 단언문을 return하거나 async/await사용
    3. try-catch문 활용
  • 테스트 결과가 기댓값과 일치하는지 확인
    • 실행하고 싶은 단언문에 도달하지 못한 채로 성공하며 종료되는 경우 expect.assertions를 호출
    • expect.assertions : 실행되어야하는 단언문의 횟수를 인수로 받아 기대한 횟수만큼 단언문이 호출되었는지 검증

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

jest의 기본 문법을 배울 수 있는 챕터였다. 매처가 이렇게 많은 줄 몰랐는데 상황에 따라서 잘 사용하는게 중요할 것 같다. 비동기 부분은 promise를 사용하는법, async 사용하는 법 등이 다양했는데 언제는 단언문을 return 해야하고, 어떤건 또 안해도 되고 그래서 좀 헷갈렸다. 쓰는 일이 많을지도 잘 모르겠다. 나오면 그때 다시 공부하는 걸로.