Dieser Artikel ist grob.
Ich hatte "Trampolin" in "RxJavaPlugins.set *** SchedulerHandler" gesetzt, aber nur "setIoSchedulerHandler".
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
Ich habe eine Testregel wie diese geschrieben,
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setComputationSchedulerHandler { Schedulers.trampoline() }
...
Wenn der zu testende Code einen "Puffer" -Operator hat, verwendet der Pufferoperator intern den "Berechnungs" -Planer, sodass Sie beim Überschreiben des "Trampolin" -Planers unbegrenzt warten müssen. Der Test endet nie.
@Test
fun testBuffer() {
val subject = PublishSubject.create<Int>()
val testObserver = subject
.buffer(1, TimeUnit.SECONDS)
.filter { it.isNotEmpty() }
.test()
subject.onNext(1)
subject.onNext(2)
testObserver.await(2, TimeUnit.SECONDS)
testObserver.assertValues(listOf(1, 2))
}
Recommended Posts