2016-11-15 95 views
10

我正在从Rx 1迁移到Rx 2的过程中,突然在阅读帖子的过程中发现Single应该是用于翻新调用的可观察类型。有没有类似Single.empty()

所以我决定给它一个机会,同时将我们的改造呼叫迁移到Rx 2,我也将返回值更改为Single<whatever>

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

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

正如你所看到的迁移,我们来简单地告诉userService模拟完成流调用之前返回一个空的observable。

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

我已经结束了做这样的事情:

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

我的问题是:

  1. 是否有这样做的更好的办法?
  2. 我是否错过了我应该知道的重要事情 - 像这样的事实并不像我期待的那样。

回答

14

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

1

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

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

记住,这不叫的用户在所有。

相关问题