【发布时间】:2018-02-27 11:49:22
【问题描述】:
测试失败,因为没有抛出异常。它只是完成而不是超时。
@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)
}
我已经在这个街区待了一个多小时,我只是不明白它为什么会失败。这可能是非常明显的事情,但我觉得我需要另一双眼睛来为我指出。
【问题讨论】:
-
just是一个有限源,序列在没有任何项目且没有延迟的情况下完成。你想完成什么? -
啊当然...
-
我想你可以把它改成
Observable.fromCallable(() -> { return true; }),它会按预期运行。just是一个阻塞调用。 -
@Tuby 完全错误。
-
@Tuby
fromCallable仍然是有限的,然而,OP 试图复制一个热的、非终止的Observable。just也不是阻塞的,而是同步的。