web-dev-qa-db-ja.com

Single.empty()のようなものはありますか

私はRx 1からRx 2に移行している途中で、投稿を読んでいると突然 Single が改造コールに使用できるオブザーバブルのタイプであることがわかりました。

それで、私はそれを試してみることにしました、そして、Rx 2へのレトロフィット呼び出しを移行している間、私はまた戻り値を_Single<whatever>_に変更しました。

問題は、ネットワークサービスを模擬するいくつかのテストです。

_when(userService.logout()).thenReturn(Observable.empty())
_

呼び出しを移行する前にわかるように、userServiceモックに空のオブザーバブルを返すように指示することにより、単純にストリームを完了していました。

呼び出しのSingle "バージョン"に移行するとき、Observable.empty()を使用できなくなりました。これは、呼び出しがObservableを返さないが、Single

私は次のようなことをしました:

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

私の質問は:

  1. これを行うより良い方法はありますか?
  2. 私が知っておくべき重要なことを見逃していますか?このようなものは、私が期待しているように実際には動作しません。
19
Fred

Singleには単一の項目またはエラーが必要であるため、Single.empty()は意味がありません。単にObservableを保持するか、空を許可するMaybeに切り替えるか、アイテムをまったく出力しないCompletableに切り替えることができます。

28
akarnokd

回避策、たとえばテストのために

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

これはサブスクライバーをまったく呼び出さないことに注意してください。

7
Florian Wolf