如何模拟改造服务可观察调用 onError?
How to mock a retrofit service observable calling onError?
我正在测试这段代码。
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()
模拟服务 returns 结果工作正常。
我愿意
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.
开头的文档
我正在测试这段代码。
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()
模拟服务 returns 结果工作正常。
我愿意
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.
开头的文档