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)
...