-
Notifications
You must be signed in to change notification settings - Fork 0
Test Double
tomchoi edited this page Mar 8, 2026
·
1 revision
단위 테스트에서 실제 의존 객체 대신 사용하는 대체 객체의 통칭입니다.
Gerard Meszaros의 xUnit Test Patterns에서 정의한 용어입니다.
| 유형 | 설명 | 사용 시점 |
|---|---|---|
| Dummy | 전달만 하고 사용되지 않는 객체. 메서드 시그니처를 채우기 위함. | 파라미터가 필요할 때 |
| Stub | 미리 정해진 답만 반환. 테스트 중 호출 여부는 검증하지 않음. | 특정 입력에 대한 반환값이 중요할 때 |
| Spy | Stub + 호출 이력 기록. 나중에 몇 번 호출됐는지 등 검증 가능. | 호출 횟수·인자 검증이 필요할 때 |
| Mock | 기대 호출을 미리 정의하고, 그대로 호출됐는지 검증. (행위 검증) | “이 메서드가 이렇게 불렸어야 한다”를 검증할 때 |
| Fake | 동작하는 구현이지만 단순/인메모리 버전. (예: 인메모리 DB) | 실제 의존성 없이 동작만 흉내낼 때 |
- Stub: 상태 검증 — “결과가 이 값이어야 한다.”
- Mock: 행위 검증 — “이 메서드가 이 인자로 호출됐어야 한다.”
- Protocol + 구현체 분리: 의존성을 프로토콜로 두고, 테스트용 Stub/Mock 구현체를 주입.
-
Fake:
UserRepository대신 인메모리 배열을 쓰는FakeUserRepository등.
- Martin Fowler, Mocks Aren't Stubs
- Gerard Meszaros, xUnit Test Patterns: Refactoring Test Code
- 도메인-레이어-파라미터-설계:-URL-vs-Entity
- 도메인-에러-설계:-유스케이스별-vs-도메인(기능)별
- Swift-6.0-Typed-Throws-Guideline
- CoreData-loadPersistentStores-비동기-처리-전략
- stateless-Infrastructure-서비스의-struct-전환
- STT-Repository-동시-요청-큐잉-전환
- Coordinator-클래스-기반에서-프로토콜-기반으로-마이그레이션