有没有类似Single.empty()的东西

时间:2016-11-15 09:25:55

标签: java rx-java rx-java2

我正在从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()))

我的问题是:

  1. 有更好的方法吗?
  2. 我错过了一些我应该知道的重要内容 - 这样的事情实际上并没有像我期待的那样表现。

2 个答案:

答案 0 :(得分:28)

Single.empty()没有任何意义,因为Single必须包含单个项目或错误。您可以保留Observable或切换到允许为空的Maybe或根本不会发出项目的Completable

答案 1 :(得分:6)

解决方法,例如对于测试将是

Observable.<Whatever>empty().toSingle()

请记住,这根本不会调用订阅者。