有了StepVerifier
很容易检查提供的Mono
是否已经完成(只需通过StepVerifier
中的expectComplete()
方法(,但是如果需要检查相反的情况,我该怎么办?
我尝试使用这种方法:
@Test
public void neverMonoTest() {
Mono<String> neverMono = Mono.never();
StepVerifier.create(neverMono)
.expectSubscription()
.expectNoEvent(Duration.ofSeconds(1))
.thenCancel()
.verify();
}
和这样的测试通过。但这是误报,因为当我用Mono.empty()
替换Mono.never()
时,测试仍然是绿色的。
有没有更好和可靠的方法来检查Mono的完成不足(当然在给定的时间范围内(?
看起来你在反应堆测试中遇到了一个错误,不幸的是,这个错误看起来不会很快得到解决:
由于我的记忆,这是反应堆测试设计中的一个持续缺陷。一旦反应堆测试从头开始重写/显着重写,很可能会修复此问题。
降级到 3.1.2 似乎可以解决问题,但这是一个相当大的降级。我知道的唯一其他解决方法是 PyvesB 在此处发布的,涉及等待 Mono 超时:
Mono<String> mono = Mono.never();
StepVerifier.create(mono.timeout(Duration.ofSeconds(1L)))
.verifyError(TimeoutException.class);
当下一个版本推出时,您应该能够执行以下操作:
Mono<String> mono = Mono.never();
StepVerifier.create(mono)
.expectTimeout(Duration.ofSeconds(1));
。作为更简洁的替代方案。