Cet article est grossier.
J'avais mis trampoline
dans RxJavaPlugins.set *** SchedulerHandler
, mais seulement setIoSchedulerHandler
.
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
J'écrivais une règle de test comme celle-ci,
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setComputationSchedulerHandler { Schedulers.trampoline() }
...
Si le code sous test a un opérateur buffer
, l'opérateur de tampon utilise en interne le planificateur de calcul
, donc écraser le planificateur trampoline
vous fera attendre indéfiniment. Le test ne se termine jamais.
@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