模拟RxJava Observable的正确方法是什么?



我有一个API返回Observable 's与RxJava一起使用。对于测试,我想避免网络操作,所以计划模拟响应。然而,由于所有的响应都必须用Observable包装,而from()方法期望Future而不是具体类型,我的模拟类与匿名包装类纠缠在一起,我认为必须有更好的方法。

我有:

public class MockApi implements MyApi {
    @Override
    public Observable<MyData> getMyData() {
        return Observable.from(new Future<MyData>() {
            @Override public boolean cancel(boolean mayInterruptIfRunning) { return false; }
            @Override public boolean isCancelled() { return false; }
            @Override public boolean isDone() { return false; }
            @Override
            public MyData get(long timeout, TimeUnit unit) throws InterruptedException,
                    ExecutionException, TimeoutException {
                return get();
            }
            @Override
            public MyData get() throws InterruptedException, ExecutionException {
                return new MyData();
            }
        });
    }
    ...
}

有更好的方法吗?

return Observable.just(new MyData());

您可以在这里找到文档。对于更复杂的mock =>创建操作符列表

您可以使用Observable.defer(() -> Observable.just(new MyData()),或者使用PublishSubject通过它发送数据。注意,在第一种情况下必须使用。defer()运算符因为它将使用与第一次调用相同的值,否则

相关内容

  • 没有找到相关文章

最新更新