Mock lifecycle

모킹 테스트는 수명과 검증 지점을 나눠야 한다

mock 객체는 한 테스트의 준비, 실행, 검증, 정리 단계를 지나며 의미가 달라진다. 호출 기록이 남으면 다음 테스트의 실패 원인이 흐려진다.

케이스마다 확인할 네 단계

beforeEach to afterEach
1

준비

테스트 대상과 대체 provider를 명확히 등록한다.

2

고정

반환값, 예외, resolve 값을 테스트 목적에 맞게 둔다.

3

관찰

결과와 함께 호출 횟수, 순서, 인자를 검증한다.

4

정리

clearAllMocks로 다음 케이스와 기록을 분리한다.

도구
역할
검증 포인트
주의점
Stub
예상 결과 제공
반환값과 분기
실제 계약과 다른 값 금지
Mock
협력 객체 호출 관찰
횟수, 인자, 순서
구현 세부 과검증 금지
Spy
기존 메서드 감시
호출 여부
복원 누락 주의
격리

외부 I/O 차단

DB, 네트워크, 시간 의존성을 테스트 밖으로 밀어낸다.

계약

실제 타입 유지

mock 응답은 실제 provider가 줄 수 있는 형태를 따라야 한다.

초기화

기록 누수 방지

이전 케이스의 호출 기록이 다음 단언에 섞이지 않게 한다.