有没有像 Single.empty()
Is there something like Single.empty()
我正在从 Rx 1 迁移到 Rx 2,在阅读帖子时突然发现 Single 应该是用于改造调用的可观察类型。
所以我决定试一试,在将改造调用迁移到 Rx 2 时,我还将 return 值更改为 Single<whatever>
。
现在的问题是,我们的一些测试模拟了类似于以下内容的网络服务:
when(userService.logout()).thenReturn(Observable.empty())
如您所见,在迁移调用之前,我们曾经通过告诉 userService
模拟到 return 一个空的可观察对象来简单地完成流。
在迁移到调用的 Single
"version" 时,我们不再可以使用 Observable.empty()
,因为调用不会 return 和 Observable
,但是 return 是 Single
.
我最终做了类似的事情:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
我的问题是:
- 有更好的方法吗?
- 我是否遗漏了任何我应该知道的重要信息 - 这样的事情实际上并不像我期望的那样。
Single.empty()
没有意义,因为 Single
必须有单个项目或错误。您可以只保留 Observable
或切换到允许空的 Maybe
或根本不发出项目的 Completable
。
解决方法,例如测试将是
Observable.<Whatever>empty().toSingle()
请记住,这根本不会调用订阅者。
我正在从 Rx 1 迁移到 Rx 2,在阅读帖子时突然发现 Single 应该是用于改造调用的可观察类型。
所以我决定试一试,在将改造调用迁移到 Rx 2 时,我还将 return 值更改为 Single<whatever>
。
现在的问题是,我们的一些测试模拟了类似于以下内容的网络服务:
when(userService.logout()).thenReturn(Observable.empty())
如您所见,在迁移调用之前,我们曾经通过告诉 userService
模拟到 return 一个空的可观察对象来简单地完成流。
在迁移到调用的 Single
"version" 时,我们不再可以使用 Observable.empty()
,因为调用不会 return 和 Observable
,但是 return 是 Single
.
我最终做了类似的事情:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
我的问题是:
- 有更好的方法吗?
- 我是否遗漏了任何我应该知道的重要信息 - 这样的事情实际上并不像我期望的那样。
Single.empty()
没有意义,因为 Single
必须有单个项目或错误。您可以只保留 Observable
或切换到允许空的 Maybe
或根本不发出项目的 Completable
。
解决方法,例如测试将是
Observable.<Whatever>empty().toSingle()
请记住,这根本不会调用订阅者。