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

Nic*_*oso 4 testing android rx-java

我有一个返回Observable's用于RxJava的API.为了测试我想避免网络操作,所以计划模拟响应.但是,由于所有响应都必须包含在内,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();
            }

        });
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Kev*_*tel 12

return Observable.just(new MyData());
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到文档.对于更复杂的mock => 创建运算符列表.