[英]How do I generate canceled requests for a spring GatewayFilter test?
过滤器的filter()
方法如下所示:
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return chain.filter(exchange).doFinally(signal -> {
LOGGER.info("Signal: " + signal.name()); // never says CANCEL
// ...
});
}
}
我需要编写单元测试以确保信号从reactor.core.publisher.SignalType
获取所有可能的值。
我似乎无法生成CANCEL
事件。 该测试使用 Mockito 并且应该看起来像这样,据我所知(减去我尝试过的所有事情但没有工作):
Mono<Void> aMono = Mono.empty();
// here I should do stuff to the mono so it gets canceled - but what?
when(chain.filter(exchange)).thenReturn(aMono);
Mono<Void> filtered = filter.filter(exchange, chain).block();
// assertions should start here
chain
和exchange
都是模拟的。 filter
是被测的 object。
它永远不会发出CANCEL
信号。 当发布者完成工作时,它将发送一个ON_COMPLETE
信号类型。
chain.filter(exchange).doFinally(signal -> {
LOGGER.info("Signal: " + signal.name()); // It must print ON_COMPLETE
});
此外,像上面那样测试反应流是一种不好的方法。 查看reactor-test
( https://mvnrepository.com/artifact/io.projectreactor/reactor-test/3.4.6 ) 库。 有很棒的实用程序,其中之一是StepVerifier
,它可以帮助您测试反应流。 例如:
StepVerifier.create(chain.filter(exchange))
.verifyComplete();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.