gpt4 book ai didi

kotlin - 超时测试未返回TimeoutException-rxjava

转载 作者:行者123 更新时间:2023-12-02 12:54:52 25 4
gpt4 key购买 nike

由于没有引发异常,因此测试失败。它只是完成而不是超时。

    @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)
}

我在这个街区呆了一个多小时,但我不明白为什么它失败了。这可能是非常明显的,但是我觉得我需要另一双眼睛为我指出这一点。

最佳答案

这是获得预期结果的测试:

@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即可,您之前使用的过滤器只是将其设为空
  • 我们想用无法完成的操作来delay the subscription,所以一个替代方法是Observable,而不是never发出
  • 从这里开始,就和
  • 一样

    关于kotlin - 超时测试未返回TimeoutException-rxjava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49007990/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com