我创建了一个简单的Kafka使用者,它返回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
知道我做错了吗?
答案 0 :(得分:3)
Kafka Flux
可能是无限的,所以它永远不会发出测试所等的onComplete
信号。如果您只对测试第一个值感兴趣,可以致电.thenCancel().verify()
。