测试失败,因为没有抛出异常。它只是完成而不是超时。
@Test
fun timeout() {
val testScheduler = TestScheduler()
val sub = Observable.just(true)
.filter{ it -> !it }
.timeout(10, TimeUnit.SECONDS, testScheduler)
val testSubscriber = sub.subscribeOn(testScheduler).test()
testScheduler.advanceTimeBy(20, TimeUnit.SECONDS)
testSubscriber.assertError(TimeoutException::class.java)
}
我已经在这个街区待了一个多小时,我只是不明白它为什么会失败。它可能是非常明显的东西,但我觉得我需要另一组眼睛来指出它。
答案 0 :(得分:1)
这是一个获得预期结果的测试:
@Test
fun timeout() {
val testScheduler = TestScheduler()
val sub = Observable.just(true) // 1
.delaySubscription(Observable.never<Boolean>()) // 2
.timeout(10, TimeUnit.SECONDS, testScheduler) // 3
val testSubscriber = sub.subscribeOn(testScheduler).test()
testScheduler.advanceTimeBy(20, TimeUnit.SECONDS)
testSubscriber.assertError(TimeoutException::class.java)
以下是对正在发生的事情的解释:
Observable
开头,之前的过滤器只是让它变成空的Observable
而不是never
发出