我正在测试此代码。
service.getProducts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Result<Catalog<SoajsProductPreview>>>() {
@Override
public void onError(Throwable e) {
view.showErrorView(e);
}
@Override
public void onNext(Result<Product> products) {
view.showProducts(products)
}
@Override
public void onCompleted() {}
});
测试
view.showProducts()
模拟服务返回结果的效果很好。我做
when(service.getProducts().thenReturn(someObservable);
现在,我想测试服务抛出错误时是否调用了
view.ShowErrorView()
,但是我找不到解决方法:显然以下内容无法编译
when(service.getProducts().thenReturn(someException);
这会立即引发异常,但不会调用订户的
onError
方法when(service.getProducts().thenReturn(someException);
我怎么能打电话给
Subscriber.onError()
? 最佳答案
when(service.getProducts().thenReturn(Observable.error(someException))
应该管用。请参阅以here开头的文档。