如何模拟改造服务可观察调用 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.

开头的文档