테스트 대상, 입력, 검증, mock 경계를 순서대로 고정한다
단위 테스트는 `expect`부터 쓰는 작업이 아니라 어떤 함수를 독립적으로 실행하고 어떤 외부 의존성을 가짜로 둘지 정하는 과정입니다.
01
Arrange
입력 데이터와 mock 반환값을 준비한다.
02
Act
테스트 대상 함수를 한 번 실행한다.
03
Assert
반환값, 예외, 호출 인자를 matcher로 확인한다.
04
Mock
외부 API와 저장소는 가짜 구현으로 격리한다.
05
Regression
버그 재현 조건을 테스트 이름과 입력에 남긴다.
검증 기준 매트릭스
값 검증
순수 함수, DTO 변환, 계산 결과는 반환값을 직접 비교한다.
toEqual
예외 검증
실패 경로는 어떤 입력에서 어떤 에러가 나는지 고정한다.
toThrow
호출 검증
mock 함수가 올바른 인자로 호출됐는지 확인한다.
toHaveBeenCalled
비동기 검증
Promise 결과와 rejection을 `await` 기준으로 확인한다.
resolves
mock 경계 표
fetch
응답 상태와 JSON 본문을 가짜로 제공한다.
DB
repository 메서드 반환값을 고정한다.
시간
Date와 timer는 테스트 안에서 제어한다.
실패 이유가 좁다
깨지면 대상 책임 하나를 바로 의심할 수 있다.
입력이 명시적이다
fixture가 테스트 의도를 숨기지 않는다.
외부 상태가 없다
네트워크와 DB 상태 때문에 흔들리지 않는다.