有没有像Single.empty()这样的东西

2022-09-01 08:50:00

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

因此,我决定试一试,在将我们的改造调用迁移到Rx 2时,我还将返回值更改为。Single<whatever>

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

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

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

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

我最终做了这样的事情:

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

我的问题是:

  1. 有没有更好的方法来做到这一点?
  2. 我是否错过了任何我应该知道的重要东西 - 这样的事情实际上并不像我期望的那样表现。

答案 1

Single.empty()没有意义,因为必须有一个项目或一个错误。您可以保留或切换到允许空或根本不发出项目的内容。SingleObservableMaybeCompletable


答案 2

解决方法,例如测试将是

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

请记住,这根本不会呼叫订阅者。


推荐