У меня есть следующий фрагмент кода в Kotlin (с использованием WebFlux), который я хочу протестировать:
fun checkUser(user: People.User?): Mono<Unit> =
if (user==null) {
Mono.empty()
} else {
webClient.get().uri {
uriBuilder -> uriBuilder
//... building a URI
}.retrieve().bodyToMono(UserValidationResponse::class.java)
.doOnError {
//log something
}.map {
if (!item.isUserValid()) {
throw InvalidUserException()
}
}
}
Мой модульный тест пока выглядит так:
@Test
fun `Returns error when user is invalid`() {
val user = People.User("name", "lastname", "street", "zip code")
//when
StepVerifier.create(checkUser(user))
//then
.expectError(InvalidUserException::class.java)
.verify()
}
Однако, когда я запускаю его, он выдает следующую ошибку:
io.mockk.MockKException: no answer found for: WebClient(#1).get()
at io.mockk.impl.stub.MockKStub.defaultAnswer(MockKStub.kt:90)
at io.mockk.impl.stub.MockKStub.answer(MockKStub.kt:42)
at io.mockk.impl.recording.states.AnsweringState.call(AnsweringState.kt:16)
at io.mockk.impl.recording.CommonCallRecorder.call(CommonCallRecorder.kt:53)
at io.mockk.impl.stub.MockKStub.handleInvocation(MockKStub.kt:263)
at io.mockk.impl.instantiation.JvmMockFactoryHelper$mockHandler$1.invocation(JvmMockFactoryHelper.kt:25)
at io.mockk.proxy.jvm.advice.Interceptor.call(Interceptor.kt:20)
Я предполагаю, что ошибка возникает, потому что я не издевался над WebClient(#1).get()
, но я не уверен, как имитировать его. До сих пор я пробовал:
every { webClient.get() } returns WebClient.RequestHeadersUriSpec
, но он не компилируется. Ошибка говорит:
Classifier 'RequestHeadersUriSpec' does not have a companion object, and thus must be initialized here
Кто-то знает, как я могу издеваться над WebClient(#1).get()
? Заранее спасибо