我有一个正在测试的 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() 时似乎未设置的响应主体?