Как работает метод triggerActions TestScheduler?
Я провожу некоторые тесты с triggerAction, чтобы посмотреть, как он работает, насколько я понимаю, он не ускоряет время, а устанавливает триггерные события.
У меня есть первые 2 тестовых экземпляра, один из которых проходит с blockingGet
@Test
fun `Passed test`() {
val actual = Single.just<String>("EXPECTED")
.delay(5, TimeUnit.SECONDS)
.doOnError {
println("doOnError() ${it.message}")
}
.doOnSuccess {
println("doOnSuccess() $it")
}
.blockingGet()
assertEquals(actual, "EXPECTED")
}
Приведенный выше тест проходит и печатает doOnSuccess () EXPECTED
@Test
fun `Failed test`() {
val testScheduler = TestScheduler()
val testObserver: TestObserver<String> = Single.just<String>("EXPECTED")
.delay(5, TimeUnit.SECONDS, testScheduler)
.doOnError {
println("doOnError() ${it.message}")
}
.doOnSuccess {
println("doOnSuccess() $it")
}
.test()
testScheduler.triggerActions()
testObserver.assertValue("EXPECTED")
}
Этот сбой, почему?
Тем не менее, этот метод проходит только если вызывается triggerActions
@Test
fun `Passed test2`() {
val testScheduler = TestScheduler()
val observer = Single.error<Int>(RuntimeException())
.delay(5, TimeUnit.SECONDS, testScheduler)
.test()
// Fails without this
testScheduler.triggerActions()
observer.assertError(RuntimeException::class.java)
}