Я разработал API с использованием web-flux, который работает нормально, когда я делаю запрос с помощью POSTMAN.Мой код:
Контроллер:
@PostMapping("/post", produces = ["application/xml"])
fun post(@Valid request: RequestData): Mono<Response> {
return Mono.just(request)
...
...
...
}
dto:
data class RequestData(
@get:NotBlank
@get:Email
val email: String = "",
)
Поэтому, когда я передаю недействительное письмо через POSTMAN, я ловлю исключение, как показано ниже, иего работа:
@ExceptionHandler
fun bindingExceptionHandler(e: WebExchangeBindException) = "Custom Error Message"
Но теперь, когда я пишу UT (@WebFluxTest) для этого случая (неверный адрес электронной почты), это не удалось.
@Test
fun testWhenInvalidEmail() {
// Request body
val email = "invalidemail"
val request = LinkedMultiValueMap<String, String>()
request.add("email", email)
webTestClient.post().uri("/post")
.body(BodyInserters.fromFormData(request))
.exchange()
.expectStatus().isOk
}
Когда я отлаживал это, я обнаружил, чтомое исключение Хандлер не входит в картину, когда запрос проходит через юнит тест.Я использую application/x-www-form-urlencoded
тип контента в запросе POST.
Пожалуйста, дайте мне знать, где я делаю неправильно. Я тоже следил за этим вопросом, но не работал.