2016-11-15 73 views
10

我正在從Rx 1遷移到Rx 2的過程中,突然在閱讀帖子的過程中發現Single應該是用於翻新調用的可觀察類型。有沒有類似Single.empty()

所以我決定給它一個機會,同時將我們的改造呼叫遷移到Rx 2,我也將返回值更改爲Single<whatever>

現在的問題是,我們的一些測試的嘲笑網絡服務類似於:

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

正如你所看到的遷移,我們來簡單地告訴userService模擬完成流調用之前返回一個空的observable。

雖然遷移到呼叫的Single「版」我們不再可以使用Observable.empty()因爲調用不返回Observable,但返回Single

我已經結束了做這樣的事情:

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

我的問題是:

  1. 是否有這樣做的更好的辦法?
  2. 我是否錯過了我應該知道的重要事情 - 像這樣的事實並不像我期待的那樣。

回答

14

Single.empty()是沒有意義的,因爲Single必須有單個項目或錯誤。你可以保留Observable或切換到Maybe,它允許空或Completable,它根本不發射物品。

1

解決方法,例如對於測試是

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

記住,這不叫的用戶在所有。

相關問題