我有以下spring反应堆代码,它确实通过Schedulers.elastic()保存在DB中。但是我看到弹性线程直到60秒(其空闲时间)才结束/提交。因此,除非等待该时间,否则我的集成测试将失败。有一个更好的方法吗 ?例如使用Schedulers.immediate()进行测试,并使用Elastic进行实际部署。
public void method() {
Mono.just(student)
.flatMap(student -> populateStudentDetails(student))
.subscribeOn(Schedulers.elastic)
.subscribe(studentRepository::save);
}
我正在按以下方式进行测试
@SpringBootTest
public class TestClass {
@Test
void testMethod() {
testClass.method();
//assertForDatainDB
//fails if immediately asserted
//succeeds if asserted after 60s
}
}
答案 0 :(得分:0)
如Darren Forsythe所建议,我必须包括StepVerifier.withVirtualTime才能通过测试
StepVerifier.withVirtualTime(() -> Mono.fromRunnable(() -> testClass.method())
.verifyComplete();