提交 9f7dd9f3 编写于 作者: A Arjen Poutsma

Add test for usage of bodyToMono in WebClient.ResponseSpec::onStatus

See gh-23365
上级 3a39b7fe
......@@ -1099,6 +1099,34 @@ class WebClientIntegrationTests {
.verifyComplete();
}
@ParameterizedWebClientTest
void mapBodyInOnStatus(ClientHttpConnector connector) {
startServer(connector);
prepareResponse(response -> response
.setResponseCode(500)
.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.setBody("{\"fooValue\":\"bar\"}")
);
Mono<String> result = this.webClient.get()
.uri("/json")
.retrieve()
.onStatus(HttpStatus::isError, response ->
response.bodyToMono(Foo.class)
.flatMap(foo -> Mono.error(new MyException(foo.getFooValue())))
)
.bodyToMono(String.class);
StepVerifier.create(result)
.consumeErrorWith(throwable -> {
assertThat(throwable).isInstanceOf(MyException.class);
MyException error = (MyException) throwable;
assertThat(error.getMessage()).isEqualTo("bar");
})
.verify();
}
private void prepareResponse(Consumer<MockResponse> consumer) {
MockResponse response = new MockResponse();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册