TEST Double
- Dummy :
- 아무것도 하지 않는 깡통 객체
- Fake:
- 단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 부족한 객체 (Ex. FakeRepository)
- Stub:
- 테스트에서 요청한것에대해 미리 준비한 결과를 제공하는 객체
- 정의하지않은 그 외에는 응답하지 않는다.
- Spy:
- Stub이면서 호출된 내용을 기록하여 보여줄 수 있는 객체.
- 일부는 실제 객체처럼 동작시키고 일부만 Stubbing 할 수 있다.
- Mock:
- 행위에대한 기대를 정의하고, 그에 따른 동작을 하도록 만들어진 객체.
Stub 과 Mock의 차이
- Stub 은 상태 검증
- 어떠한 검증 이후 스텁의 상태에따라 검증
- Mock은 행위 검증
- Mock이 진행한 어떠한 행위에대한 중심으로 검증.
Classicist VS Mockist
Classicist :
- 꼭 필요한 경우에만 mock을 사용하자
Mockist:
- 모든 테스트에 mock을 사용하자
Mocking을 사용하면 좋은 상황 :
- 외부 시스템이 테스트에 필요할 때
- 외부시스템은 우리가 개발한것이 아니기 때문.
- 그래서 주로 Presentation Layer Test에서 mock 사용된다.
- Mocking 시에 실제 프로덕션 코드에서의 런타임 시점에 일어날 일을 정확하게 Stubbing 했다고 단언할 수 있을까?
'공부 > Test Code' 카테고리의 다른 글
TDD (0) | 2024.01.11 |
---|---|
TEST = [] (0) | 2024.01.11 |
Spring & JPA 기반 테스트 (0) | 2024.01.11 |
더 나은 테스트 작성하기 (0) | 2024.01.11 |
UnitTEST (0) | 2024.01.11 |