Unit testing 测试RxJava:AdvanceTime在简单的延迟流中不起作用

Unit testing 测试RxJava:AdvanceTime在简单的延迟流中不起作用,unit-testing,kotlin,rx-java2,Unit Testing,Kotlin,Rx Java2,我有一个非常简单的函数,它延迟给定延迟的值: Flowable.defer<Effect> { Flowable.just(Effect.Success) as Publisher<out Effect> } .delay(2, TimeUnit.SECONDS) .subscribeOn(computationScheduler) .observeOn(mainScheduler) 没有延迟,这只是工作,但似乎我不能设法提前适当的时间。 根据您调用的延迟方

我有一个非常简单的函数,它延迟给定延迟的值:

Flowable.defer<Effect> { Flowable.just(Effect.Success) as Publisher<out Effect> }
  .delay(2, TimeUnit.SECONDS)
  .subscribeOn(computationScheduler)
  .observeOn(mainScheduler)
没有延迟,这只是工作,但似乎我不能设法提前适当的时间。
根据您调用的延迟方法的javadocs,提前感谢您的帮助

此版本的{@code delay}默认在{@code上运行 计算}{@link Scheduler}

因此,您的代码无法工作,因为延迟方法使用的计算调度器与您订阅的计算调度器不同

为了修复它,您必须将TestScheduler
computationScheduler
传递给延迟方法:

Flowable.defer<Effect> { Flowable.just(Effect.Success) as Publisher<out Effect> }
    .delay(2, TimeUnit.SECONDS, computationScheduler)
    ...

天哪,我真不敢相信我犯了那个错误。非常感谢您的回复!
Flowable.defer<Effect> { Flowable.just(Effect.Success) as Publisher<out Effect> }
    .delay(2, TimeUnit.SECONDS, computationScheduler)
    ...