Jest 테스트 작성 루프

테스트 대상, 입력, 검증, 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 상태 때문에 흔들리지 않는다.