【发布时间】:2022-01-17 12:01:04
【问题描述】:
我正在尝试对我的 GatewayFilter 进行单元测试,但是我在运行简单的测试时遇到了麻烦。
这是目前失败的小例子
@ExtendWith(MockitoExtension.class)
public class SomeFilterTest {
private final GatewayFilter gatewayFilter = (exchange, chain) ->
Mono.just("Hello")
.flatMap(this::doSomething)
.switchIfEmpty(Mono.defer(() -> chain.filter(exchange)));
private Mono<Void> doSomething(String value) {
System.out.println(value);
return Mono.empty();
}
@Test
void test1() {
var exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/").build());
var chain = mock(GatewayFilterChain.class);
gatewayFilter.filter(exchange, chain).block();
}
}
不幸的是,它失败了,因为
供应商返回的 Mono 为 null java.lang.NullPointerException: 供应商返回的 Mono 是 在 java.base/java.util.Objects.requireNonNull 处为空(Objects.java:246) 在 reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44) 在 reactor.core.publisher.Mono.subscribe(Mono.java:4361)
说实话,我不知道为什么会这样?
【问题讨论】:
标签: spring unit-testing spring-webflux