如何在Maybe.create(emitter)中发出Maybe.empty?

时间:2019-02-13 00:29:00

标签: java rx-java2

我想将以下回调代码包装为Maybe

public class FooDataSource 
...
public Maybe<Foo> get(){
    return Maybe.create(emitter -> {
        bar.setCallback(isEmpty -> emitter.onComplete());
    });
}

没有调用generator.onEmpty(),我能想到的最接近的等效调用是generator.onComplete()。我“假设” onComplete()将成为Maybe的Maybe.empty()等效项。

问题是当我测试此代码时

FooDataSource.get().subscribe(testObserver);
// Assert that empty returns
testObserver.assertEmpty();

我得到了它,而不是空的。

java.lang.AssertionError: Completed! (latch = 0, values = 0, errors = 0, completions = 1)

如何向下游发出onEmpty()?

1 个答案:

答案 0 :(得分:1)

根据文档,TestObserver#assertEmpty()表示

  

确认TestObserver / TestSubscriber收到了Disposable,但没有其他事件。

据我了解,它与您的情况不符-您调用emitter.onComplete()。要正确测试代码,您可以使用tests of rxjava2 repository

中使用的方法
@Test
public  void empty() {
    Maybe.empty()
    .test()
    .assertResult();
}