I'm in the process of migrating from Rx 1 to Rx 2 and suddenly while reading through posts I found out that Single should be the type of observable to use for retrofit calls.
So I've decided to give it a shot and while migrating our retrofit calls to Rx 2 I also changed the return value to Single<whatever>
.
Now the issue is, some of our tests mock the network services something similar to:
when(userService.logout()).thenReturn(Observable.empty())
As you can see prior to migrating the calls we used to simply complete the stream by telling the userService
mock to return an empty observable.
While migrating to the Single
"version" of the calls we no longer can use Observable.empty()
because the call doesn't return an Observable
, but returns a Single
.
I've ended up doing something like:
when(userService.logout()).thenReturn(
Single.fromObservable(Observable.<whatever>empty()))
My questions are:
Single.empty()
makes no sense because Single
has to have a single item or an error. You could just have kept Observable
or switched to Maybe
which does allow empty or Completable
which doesn't emit an item at all.