我正在测试此代码。

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开头的文档。

10-06 07:19