With StepVerifier
很容易检查是否提供Mono
已完成(仅通过expectComplete()
中的方法StepVerifier
),但是如果需要检查相反的情况该怎么办?
我尝试使用这种方法:
@Test
public void neverMonoTest() {
Mono<String> neverMono = Mono.never();
StepVerifier.create(neverMono)
.expectSubscription()
.expectNoEvent(Duration.ofSeconds(1))
.thenCancel()
.verify();
}
并且这样的测试通过了。但这是误报,因为当我替换Mono.never()
with Mono.empty()
测试仍然是绿色的。
有没有更好、更可靠的方法来检查 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));
...作为更简洁的替代方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)