当前位置: 首页 > 知识库问答 >
问题:

RxJava Completable和第二次测试

贺懿轩
2023-03-14

我有以下RxJava2 Kotlin代码:

val tester = Completable.complete()
            .andThen(SingleSource<Int> { Single.just(42) })
            .test()        
tester.assertComplete()
tester.assertValue(42)

这模拟了一个可完全观察的对象(想象对API的一个简单更新操作),然后是一个可观察的对象(图像是API上的一个get操作)。我希望以一种方式连接这两个可观察对象,当Completable完成时,运行单个对象,最后在我的观察者(Int 42)上获得onSuccess事件。

但是,此测试代码不起作用。断言失败,出现以下错误:

java.lang.AssertionError: Not completed
(latch = 1, values = 0, errors = 0, completions = 0))

我无法理解我做错了什么,我希望Compltable在订阅时发出on完整,然后是单一订阅,我的观察者(tester)得到一个值为42的on成功事件,但似乎订阅保持“暂停”不发出任何东西。

这个想法与本文中的想法类似:https://android.jlelse.eu/making-your-rxjava-intentions-clearer-with-single-and-completable-f064d98d53a8

apiClient.updateMyData(myUpdatedData) // a Completable
    .andThen(performOtherOperation()) // a Single<OtherResult>
    .subscribe(otherResult -> {
        // handle otherResult
    }, throwable -> {
        // handle error
    });

共有1个答案

房项禹
2023-03-14

问题在于静态编程语言对花括号的模糊使用:

.andThen(SingleSource<Int> { Single.just(42) })

您创建了一个SingleSource,它会注意到它的SingleWatch,但这被静态编程语言语法隐藏。您需要的是简单易用:

.andThen(Single.just(42))

或延期使用

.andThen(Single.defer { Single.just(42) })
 类似资料:
  • 问题内容: 我有一些这样定义的路线: 在这些路线中,我有一个禁区和一个授予访问权页面以授予对该禁区的访问权限。当解析提供者被拒绝时,我将重定向到该路由。 这是执行此操作的代码: 这是我的提供者的代码: (只返回一个布尔值) 我第一次与提供者一起去路线被执行。该路由被拒绝,因为未授予访问权限,我们被重定向到该路由。 在此页面中,用户可以登录并有权访问限制区域。一旦用户登录,我们会将其重定向到该路由,

  • 问题内容: 在Scipy文件中写道: 函数零将创建一个由零组成的数组,函数一个将创建由零组成的数组,函数空将创建一个数组,其初始内容是随机的,并取决于内存的状态。默认情况下,创建的数组的dtype为float64。 所以我运行了这段代码: 返回: 因此,它返回一个随机数,并且一切都很好。 但是,当我第二次运行该代码(在该shell中)时,它返回一个零数组! 问题是,为什么第二次返回零数组(而不是随

  • 如果用户通过cmd输入以下数字:< code>2 -13 4 12 -1 113 19,则输出应为: 但我得到的是这个: 即该对中的第二个数字再次重复自己作为下一对中的第一个数字。代码有什么问题?

  • 本人是24届学生,去年这个时候开始学安卓,没有做过什么特别的项目,都是一些小demo。 上周四上午第一次面试,深圳的一家小厂, 被HR鸽了。 下午补面,第一次面试,过于紧张了,技术面的时候问了两分钟就挂了... 问我有什么复杂的项目,复杂在哪里。突然脑子一片空白,没说出什么,就没有下文了。 今天上午面试的是广州黄埔的一家小厂,boss上招正式工,7k-10k。我私聊hr,然后给了我实习生面试的机会

  • 一家信安公司,产品实习生岗位 1自我介绍 2在校吗?实习时长 3扣项目 4画原型能力? 5互联网核心价值? 6gpt用过吗?原理知道吗 7反问 感觉这个hr有一丢丢不是特别专业,介绍公司业务时也就笼统说一下~可能不是很想要我吧。 总流程也就9min左右… #产品实习,你更倾向大公司or小公司#