Ich habe die folgende Klasse (vereinfacht):Wie zu testen, ob Observable die richtigen Scheduler in RxJava verwendet?
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);
}
}
Und ich schreibe Unit-Tests für sie. Wie kann ich testen, dass subscribeOn
und observeOn
mit korrekten Werten aufgerufen wurden?
Ich versuche folgendes:
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
Die oben nicht (glaube ich), weil subscribeOn
und observeOn
sind final
Methoden. Kann es also einen anderen Weg geben, um sicherzustellen, dass das Observable korrekte Scheduler verwendet?