【发布时间】:2019-11-20 02:11:56
【问题描述】:
在为将 Flux 流作为输出返回的函数编写单元测试时,我需要帮助。
我曾尝试使用 StepVerifier,但我想我使用它的方式有误。
需要测试以下功能。
public Flux<List<String>> streamCompletedScansAfterLastSubmit(@PathVariable("username") String username) {
Flux<Long> interval = Flux.interval(Duration.ofSeconds(5));
Flux<List<String>> completeScans = Flux.fromStream(Stream.generate(() -> scanService.getCompletedScansAfterLastSubmitForUser(username)));
return Flux.zip(interval, completeScans).map(Tuple2::getT2);
}
我试过的是
public void shouldPublishTheAssessmentStatusOnceFinished() {
when(scanService.getCompletedScansAfterLastSubmitForUser(Mockito.anyString())).thenReturn(Arrays.asList("Scan1:Success"));
StepVerifier.create(apiScanController.streamCompletedScansAfterLastSubmit("quays_ka"))
.expectSubscription()
.expectNext(Arrays.asList("Scan1:Success"))
.verifyComplete();
}
我收到错误:
java.lang.AssertionError:预期“expectComplete”失败(预期:onComplete();实际:onNext([Scan1:Success]))
不知何故,服务方法被调用了两次(我使用 doAnswer 进行了检查)
【问题讨论】:
标签: java spring-boot spring-webflux project-reactor