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

Posted

技术标签:

【中文标题】如何使用 Reactor 的 StepVerifier 来验证 Mono 是不是为空?【英文标题】:How do I use Reactor's StepVerifier to verify a Mono is empty?如何使用 Reactor 的 StepVerifier 来验证 Mono 是否为空? 【发布时间】:2018-12-26 23:49:08 【问题描述】:

我正在使用StepVerifier 来测试值:

@Test
public void testStuff() 
    Thing thing = new Thing();
    Mono<Thing> result = Mono.just(thing);
    StepVerifier.create(result).consumeNextWith(r -> 
        assertEquals(thing, r);
    ).verifyComplete();

我现在想做的是测试 Mono 中是否缺少项目。像这样:

@Test
public void testNoStuff() 
    Mono<Thing> result = Mono.empty();
    StepVerifier.create(result)... // what goes here?

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

【问题讨论】:

【参考方案1】:

只需使用verifyComplete()。如果Mono 发出任何数据,它将使stepverifier 失败,因为此时它不期望onNext 信号。

【讨论】:

【参考方案2】:

这里检查onNext没有被调用

 StepVerifier.create(result).expectNextCount(0).verifyComplete()

【讨论】:

请解释与另一个较旧的赞成答案的区别。看来你推荐的是同一个东西,只是没有任何解释

以上是关于如何使用 Reactor 的 StepVerifier 来验证 Mono 是不是为空?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Reactor 中使用 Mono 的内容

Reactor模式详解及redis如何使用

如何增加reactor WebClient的工作线程?

如何在 reactor-netty 中配置池连接空闲超时

如何使用 Reactor Flux 处理 CSV 文件并输出为 JSON

在3dmax中如何找到reactor面板?3dmx中,我用鼠标拖拽reactor面板时,玩不见了,如何恢复显示?