I have the following class (simplified):
public class Usecase<T> {
private final Observable<T> get;
private final Scheduler observeScheduler;
public Usecase(Observable<T> get, Scheduler observeScheduler) {
this.get = get;
this.observeScheduler = observeScheduler;
}
public Observable<T> execute() {
return get.subscribeOn(Schedulers.io()).observeOn(observeScheduler);
}
}
And I'm writing unit tests for it. How can I test that subscribeOn
and observeOn
were called with correct values?
I try the following:
Observable<String> observable = mock(Observable.class);
Usecase<String> usecase = new Usecase(observable, Schedulers.computation());
usecase.execute();
verify(observable).subscribeOn(Schedulers.computation()); // should fail here, but passes
verify(observable).observeOn(Schedulers.computation()); // should pass, but fails: Missing method call for verify(mock) here
The above fails (I think) because subscribeOn
and observeOn
are final
methods. So may be there is some other way to ensure that the observable uses correct schedulers?