Ho la classe seguente (semplificata):Come testare che osservabile utilizza gli scheduler corretti in RxJava?
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);
}
}
e sto scrivendo unit test per esso. Come posso verificare che subscribeOn
e observeOn
siano stati chiamati con valori corretti?
cerco il seguente:
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
È possibile che questo fallisce (credo) perché subscribeOn
e observeOn
sono final
metodi. Quindi potrebbe esserci un altro modo per garantire che l'osservabile usi gli scheduler corretti?