How can I test a handler method that receive ServerRequest
and return Mono<ServerResponse>
?
I can create a ServerRequest
via org.springframework.mock.web.reactive.function.server.MockServerRequest.builder()
. And assert on the ServerResponse.statusCode()
. However I would like to test the body of this ServerResponse
but there is no way to extract it.
ServerResponse response = target.search(MockServerRequest.builder()
.method(HttpMethod.GET)
.build()
).block();
assertThat(response.statusCode()).isEqualTo(HttpStatus.OK);
//assertThat(response.body()).isNotNull();
I don't want to do a broader test with the WebTestClient
, I would like to test all possible cases of response with unit tests.
Thanks
I had exactly the same question, because I don't want to start the entire Spring context for every test. Thanks for the info in the own-answer, this helped me. Here is a complete example including Mockito and JUnit5:
So, it seems that the best solution is to use the
WebTestClient
. However this one can be used without a running server;The trick is to use the
bindTo..()
builder method. In my casebindToRouterFunction(new MyRouter(new MyHandler()))
works well