使用Schedulers.elastic进行Spring集成测试

时间:2019-01-10 13:06:03

标签: spring project-reactor reactor

我有以下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
   }
}

1 个答案:

答案 0 :(得分:0)

如Darren Forsythe所建议,我必须包括StepVerifier.withVirtualTime才能通过测试

StepVerifier.withVirtualTime(() -> Mono.fromRunnable(() -> testClass.method())
  .verifyComplete();