假设我们有一个o.s.w.reactive.function.server.ServerResponse
实例。
提取其主体内容的正确方法是什么,换句话说,如何实现fetchBodyAsString
函数?
test(){
ServerResponse response = getResponseFromService("mock data");
String body = fetchBodyAsString(response);
assertEquals("hello", body);
}
您能否详细说明一下为什么
ServerResponse
拥有所有方法(cookies(), headers(), statusCode()
)的方法,而响应主体却没有?我想应该有一种方法可以使用writeTo()
方法获得尸体,尽管如何使用它绝对是个模糊的问题。 最佳答案
据我所知ServerResponse用于控制器或路由器功能。
为了进行测试,您可以使用WebTestClient
@Autowired
WebTestClient webTestClient;
@Test
void test() {
webTestClient.get()
.exchange()
.expectStatus()
.isOk()
.expectHeader()
.contentType(MediaType.APPLICATION_JSON)
.expectBody()
.jsonPath("data.name").isEqualTo("name");
}
要么
@Autowired
WebTestClient webTestClient;
@Test
void test() {
FluxExchangeResult<String> result = webTestClient.get()
.exchange()
.returnResult(String.class);
int rawStatusCode = result.getRawStatusCode();
HttpStatus status = result.getStatus();
HttpHeaders responseHeaders = result.getResponseHeaders();
String stringResponseBody = result.getResponseBody().blockFirst();
}