如何使用Reactor的StepVerifier来验证Mono是否为空?

Mar*_*ark 10 java unit-testing reactive-programming project-reactor

StepVerifier用来测试值:

@Test
public void testStuff() {
    Thing thing = new Thing();
    Mono<Thing> result = Mono.just(thing);
    StepVerifier.create(result).consumeNextWith(r -> {
        assertEquals(thing, r);
    }).verifyComplete();
}
Run Code Online (Sandbox Code Playgroud)

我现在要做的是测试单声道中没有项目.像这样:

@Test
public void testNoStuff() {
    Mono<Thing> result = Mono.empty();
    StepVerifier.create(result)... // what goes here?
}
Run Code Online (Sandbox Code Playgroud)

我想测试Mono实际上是空的.我怎么做?

Sim*_*slé 13

只需使用verifyComplete()。如果Mono发出任何数据,它将使步进验证器失败,因为此时不希望有onNext信号。


sam*_*bel 5

这里检查没有调用 onNext

 StepVerifier.create(result).expectNextCount(0).verifyComplete()
Run Code Online (Sandbox Code Playgroud)

  • 请解释与其他较旧的、已投票的答案的区别。看来你推荐的是同样的东西,只是没有任何解释 (2认同)