32

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

そこで、試してみることにしました。改良呼び出しを Rx 2 に移行するときに、戻り値も に変更しましたSingle<whatever>

問題は、一部のテストで次のようなネットワーク サービスをモックすることです。

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

ご覧のとおり、呼び出しを移行する前に、userServiceモックに空のオブザーバブルを返すように指示して、ストリームを完成させていました。

Single呼び出しの「バージョン」に移行する間Observable.empty()、呼び出しは を返さず、 を返すため、使用できなくなりましObservableSingle

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

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

私の質問は次のとおりです。

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

2 に答える 2

36

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

于 2016-11-15T17:05:46.663 に答える
11

テストなどの回避策は次のとおりです。

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

これは加入者をまったく呼び出さないことに注意してください。

于 2017-07-25T13:51:01.617 に答える