我正在从Rx 1迁移到Rx 2,突然在阅读帖子时我发现Single应该是用于改装调用的可观察类型。
所以我决定尝试一下,在将我们的改装调用迁移到Rx 2时,我也将返回值更改为Single<whatever>
。
现在的问题是,我们的一些测试模拟网络服务类似于:
when(userService.logout()).thenReturn(Observable.empty())
正如您在迁移调用之前所看到的那样,我们过去只是通过告诉userService
mock返回一个空的observable来完成流。
迁移到Single
&#34;版本&#34;我们无法再使用Observable.empty()
的来电,因为来电不会返回Observable
,但会返回Single
。
我最终做了类似的事情:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
我的问题是:
答案 0 :(得分:28)
Single.empty()
没有任何意义,因为Single
必须包含单个项目或错误。您可以保留Observable
或切换到允许为空的Maybe
或根本不会发出项目的Completable
。
答案 1 :(得分:6)
解决方法,例如对于测试将是
Observable.<Whatever>empty().toSingle()
请记住,这根本不会调用订阅者。