如何为SpringWebFilter编写JUnit?

如何为SpringWebFilter编写JUnit?,junit,spring-webflux,Junit,Spring Webflux,我有一个CustomWebFilter类实现org.springframework.web.server.WebFilter接口 @Component public class CustomWebFilter implements WebFilter { @Override public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain

我有一个
CustomWebFilter
类实现
org.springframework.web.server.WebFilter
接口

@Component
public class CustomWebFilter implements WebFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange, 
      WebFilterChain webFilterChain) {
        if(<expression>){
            ServerHttpRequest mutatedRequest = exchange.getRequest()
                    .mutate()
                    .header("new-header-key", "new-header-value")
                    .build();

            ServerWebExchange mutatedExchange = exchange.mutate()
                    .request(mutatedRequest)
                    .build();
            return webFilterChain.filter(mutatedExchange);
        }
        return webFilterChain.filter(exchange);
    }
}
@组件
公共类CustomWebFilter实现WebFilter{
@凌驾
公共Mono筛选器(ServerWebExchange ServerWebExchange,
网络过滤器链(网络过滤器链){
if(){
ServerHttpRequest mutatedRequest=exchange.getRequest()
.mutate()
.header(“新标题键”、“新标题值”)
.build();
ServerWebExchange mutatedExchange=exchange.mutate()
.请求(mutatedRequest)
.build();
返回webFilterChain.filter(mutatedExchange);
}
返回webFilterChain.filter(交换);
}
}

由于方法
filter
返回类型是
Mono
,如何通过编写JUnit test来验证请求中的更改?

模拟ServerWebExchange和WebFilterChain,将它们传递到方法中,然后验证它们。如果您只想做单元测试,那么@123是绝对正确的,您必须模拟这些参数;然而,如果您想在更大的流中进行测试,您知道,就像集成测试一样,您可以使用。另外,你可以按照@123给出的例子来解决这个问题,这对我来说非常有效。感谢您将ServerWebExchange和WebFilterChain打包,将它们传递到您的方法中,然后进行验证。如果您只想进行单元测试,那么@123是绝对正确的,您必须模拟这些参数;然而,如果您想在更大的流中进行测试,您知道,就像集成测试一样,您可以使用。另外,你可以按照@123给出的例子来解决这个问题,这对我来说非常有效。谢谢