小编Cor*_*ing的帖子

使用 MockServerHttpResponse 测试 WebFilter

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

unit-testing mocking spring-webflux

5
推荐指数
1
解决办法
503
查看次数

标签 统计

mocking ×1

spring-webflux ×1

unit-testing ×1