2016-11-15 18 views
10

Jestem w trakcie migracji z Rx 1 do Rx 2 i nagle podczas czytania przez posty dowiedziałem się, że Single powinien być typem obserwowalnym do wykorzystania w przypadku połączeń modernizacyjnych.Czy istnieje coś takiego jak Single.empty()

Postanowiłem więc zrobić zdjęcie i podczas migracji naszych połączeń modernizacyjnych do Rx 2 zmieniłem również wartość zwracaną na Single<whatever>.

Teraz problem jest, niektóre z naszych testach drwić usług sieciowych coś podobnego do:

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

Jak widać przed migracją połączeń użyliśmy po prostu zakończyć strumień opowiadając userService makiety do zwraca puste obserwowalne.

Podczas migracji do „wersja” Single zaproszeń już nie mogą korzystać Observable.empty() ponieważ wywołanie nie zwróci Observable, ale zwraca Single.

mam zakończyła się robi coś takiego:

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

moje pytania są następujące:

  1. Czy istnieje lepszy sposób to zrobić?
  2. Czy brakuje mi czegoś ważnego, co powinienem wiedzieć - coś takiego nie zachowuje się tak, jak tego oczekuję.

Odpowiedz

14

Single.empty() nie ma sensu, ponieważ Single musi mieć pojedynczy element lub błąd. Mogłeś po prostu zachować Observable lub zmienić na Maybe, który zezwala na pusty lub Completable, który w ogóle nie emituje elementu.

1

Obejście np. do badań byłoby

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

pamiętać, że to nie wywołuje abonentów w ogóle.

Powiązane problemy