spyk(WebClient.builder()...build())
- 기본 동작은 진짜 WebClient 그대로 실행
- 하지만 특정 메서드만 가로채서(stub / verify) 조작 가능
spyk는 partial mock이라고 하는데(부분 목)
- 실제 객체를 사용하되
- 내가 지정한 메서드만 가짜로 바꾼다는 것
이런 코드가 있다고 하자.
val webClientSpy =
spyk( // spyk가 래핑한다
WebClient.builder() // webclient 인스턴스를
.baseUrl(mockWebServer.url("/").toString())
.clientConnector(ReactorClientHttpConnector(httpClient))
.build()
)
이 때 실제로 벌어지는 일들은
- 실제로 WebClient 인스턴스를 생성한다.
- 그 인스턴스를 spyk가 감싼다(래핑)
이 뒤에 별다른 코드를 하지 않고 get()을 호출하면
webClientSpy.get()
실제로 WebClient.get()이 호출된다.
진짜 네트워크가 동작함.
그런데? 특정 메서드만 stub한다면
every {
webClientSpy.get()
} returns mockRequest
get()은 내가 작성한 mock을 동작시킨다.
그 외 메서드는 실제로 작동한다.
when use?
- webClient의 특정 단계만 제어하고 싶을 때 (예: retrieve(), exchangeToMono())
- 호출 여부를 검증하고 싶을 때 ( verify )
'【 개발 이야기 】' 카테고리의 다른 글
| reactor와 coroutine의 관계에 대하여 알아봅시다 (0) | 2026.01.19 |
|---|---|
| 리눅스 읽기쓰기 권한 읽는 법 (0) | 2026.01.06 |
| 패스파라미터와 쿼리파라미터 (0) | 2025.12.04 |
| 쿼리 파라미터와 패스 파라미터 (0) | 2025.11.06 |
| 테스트 더블 : 더미, 스텁, 페이크, 스파이, 목 (0) | 2025.10.15 |