모킹 테스트는 준비, 실행, 단언, 초기화 순서를 지킨다

mock은 편하지만 호출 기록이 남습니다. 테스트마다 같은 상태에서 시작하도록 생성과 정리 지점을 분리해야 합니다.

1

가짜 객체 준비

반환값과 호출 추적 함수를 먼저 정합니다.

2

모듈 조립

실제 provider 대신 useValue로 mock을 주입합니다.

3

대상 실행

서비스나 컨트롤러 메서드를 직접 호출합니다.

4

결과 단언

반환값과 mock 호출 인자를 함께 확인합니다.

5

기록 초기화

다음 테스트를 위해 clearAllMocks를 실행합니다.

대상 고정

테스트하려는 클래스 하나를 먼저 정합니다.

외부 I/O 차단

DB, 네트워크, 파일 시스템은 mock으로 막습니다.

상태 누수 방지

테스트 사이 호출 기록이 섞이지 않게 합니다.

핵심: 좋은 단위 테스트는 빠르게 끝나는 것만이 아니라, 매 실행마다 같은 조건에서 같은 이유로 통과해야 합니다.