如何为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给出的例子来解决这个问题,这对我来说非常有效。谢谢