【发布时间】:2016-07-29 19:42:14
【问题描述】:
我有以下课程(简化):
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);
}
}
我正在为它编写单元测试。如何测试 subscribeOn 和 observeOn 是否使用正确的值调用?
我尝试以下方法:
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
上述失败(我认为)因为subscribeOn 和observeOn 是final 方法。那么是否有其他方法可以确保 observable 使用正确的调度程序?
【问题讨论】:
标签: unit-testing mockito rx-java