小编yos*_*riz的帖子

Rx-Kotlin awaitTerminalEvent从未获得onComplete

我试图更好地理解如何使用Rx-Kotlin进行单元测试,但是我无法成功地将主题设置为"已完成".因此,我总是在等待5秒的超时(onComplete应该是立即的),然后在assertComplete上失败.

我对awaitTerminalEvent的理解是它应该只阻塞,直到调用onComplete.我也研究过TestScheduler,但我不相信这里应该要求它.

任何可以引导我朝着正确方向前进的帮助或文档都将非常感激.

@Test
fun testObservable() {
    val subject = BehaviorSubject.create<Int>()
    subject.onNext(0)

    TestSubscriber<Int>().apply {
        subject.subscribe({
            System.out.println(it)
            subject.onNext(1)
            subject.onComplete()
        })

        this.awaitTerminalEvent(5, TimeUnit.SECONDS)
        this.assertComplete()
        this.assertValue(1)
    }
}
Run Code Online (Sandbox Code Playgroud)

testing unit-testing kotlin rx-kotlin rx-java2

3
推荐指数
1
解决办法
642
查看次数

如何将Observable <Observable <List <T >>>转换为Observable <List <T >>

我坚持如何将以下可观察类型转换/转换为我的目标类型:

我有类型的可观察性:

Observable<Observable<List<FooBar>>>
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

Observable<List<FooBar>>
Run Code Online (Sandbox Code Playgroud)

因此,当我订阅它时,它List<FooBar>不会发出Observable<List<FooBar>>

我尝试使用map,flatMap ......我找不到解决方案.

然而,我发现了一个奇怪的外观操作符blockingFirst,我的IDE指示它Observable<List<FooBar>>在应用时返回Observable<Observable<List<FooBar>>>

但是"阻塞"部分令我感到困惑.

我也在寻找比blockingFirst一个更好的解决方案,如果有的话.

java reactive-programming rx-java rx-java2

2
推荐指数
1
解决办法
436
查看次数