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

问题描述 投票:19回答:2

我正在从Rx 1迁移到Rx 2,突然在阅读帖子时我发现Single应该是用于改装调用的可观察类型。

所以我决定尝试一下,在将我们的改装调用迁移到Rx 2时,我也将返回值更改为Single<whatever>

现在的问题是,我们的一些测试模拟网络服务类似于:

when(userService.logout()).thenReturn(Observable.empty())

正如您在迁移调用之前所看到的那样,我们通过告诉userService mock返回一个空的observable来简单地完成流。

在迁移到调用的Single“版本”时,我们不再可以使用Observable.empty(),因为调用不返回Observable,但返回Single

我最终做了类似的事情:

when(userService.logout()).thenReturn(
                    Single.fromObservable(Observable.<whatever>empty()))

我的问题是:

  1. 有没有更好的方法呢?
  2. 我错过了一些我应该知道的重要事情 - 这样的事情实际上并不像我期望的那样。
java rx-java rx-java2
2个回答
28
投票

Single.empty()毫无意义,因为Single必须有一个项目或错误。你可以保持Observable或切换到Maybe,它允许空或Completable,它根本不会发射物品。


6
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.