2016-11-15 15 views
10

私はRx 1からRx 2に移行中です。ポストを読んでいるうちに、Singleが改造呼び出しに使用する観測可能なタイプであることがわかりました。何かありますか?

私はそれを打つことに決めました。私たちのレトロフィットコールをRx 2に移行する間に、戻り値もSingle<whatever>に変更されました。ご覧のように前に我々は単にへuserServiceモックを伝えることで、ストリームを完了するために使用されるコールの移行に

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

は、今の問題は、我々のテストのいくつかは、ネットワークサービスにに似た何かを嘲笑されます空の観測値を返します。

我々はもはや通話がObservableを返さないのでObservable.empty()を使用しませんが、Singleを返すことができます通話のSingle「バージョン」に移行中。

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

私の質問は次のとおりです:私のようなものをやってしまってきた

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

答えて

14

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

1

テストのために

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

が、これは全くの加入者を呼び出していないことを心に留めておくことになります。