Project Reactor 测试从未完成

Project Reactor test never completes

我创建了一个简单的 Kafka 消费者,它 returns 一个 Flux 个对象(接收到的消息),我正在尝试使用 StepVerifier.

在我的测试中,我做了类似的事情:

Flux<Pojo> flux = consumer.start();
StepVerifier.create(flux)
  .expectNextMatches(p -> p.getList().size() == 3)
  .verifyComplete();

断言工作正常(如果我将值从 3 更改为其他值,则测试失败)。但是,如果断言通过,则测试永远不会退出。

我也试过像这样使用 verify 方法:

StepVerifier.create(flux)
  .expectNextMatches(f -> f.getEntitlements().size() == 3)
  .expectComplete()
  .verify(Duration.ofSeconds(3));

在这种情况下,我得到这个错误:

java.lang.AssertionError: VerifySubscriber timed out on false

知道我做错了什么吗?

Kafka Flux 可能是无限的,因此它永远不会发出测试等待的 onComplete 信号。如果您只对测试第一个值感兴趣,可以调用 .thenCancel().verify()