Cor*_*ing 5 unit-testing mocking spring-webflux
我有一个正在测试的 org.springframework.web.server.WebFilter 。我正在嘲笑 ServerWebExchange 返回 MockServerHttpResponse。当网络过滤器想要返回错误响应时,它会使用
private static Mono<Void> setErrorResponse(ServerWebExchange exchange, String message) {
ServerHttpResponse response = exchange.getResponse()
response.statusCode = HttpStatus.BAD_REQUEST
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE)
DataBuffer buffer = response.bufferFactory().wrap(message.getBytes("UTF-8"))
return response.writeWith(Flux.just(buffer))
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过调用获取响应正文
response.getBodyAsString().block()
Run Code Online (Sandbox Code Playgroud)
但我总是得到
java.lang.IllegalStateException: No content was written nor was setComplete() called on this response.
Run Code Online (Sandbox Code Playgroud)
如何使用模拟来获取使用 writeWith() 时似乎未设置的响应主体?
block() 也必须在 Mono 结果上调用。
Mono<Void> mono = setErrorResponse(exchange, "ERROR");
mono.block();
Assertions.assertEquals("ERROR",exchange.getResponse().getBodyAsString().block());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |