我的理解是,我可以将合并操作员与其他2个观测值一起使用,然后是FirstorError oberator返回返回结果的第一个可观察的可观察。
我正在尝试运行测试案例,但似乎并没有做我认为会做的事情,因此不确定我的测试是否有问题或正在错误地使用操作员,我很感激是否有人可以帮助我。如果有人知道一种更好的方法来达到相同的结果也将很棒。
这是我的测试案例:
@Test
public void testMergeOperator() {
TestObserver<String> observer = new TestObserver<>();
Observable<String> foo = Observable.just("FOO");
Observable<String> bar = Observable.timer(2, SECONDS).just("BAR");
foo.publish(first -> Observable.merge(first, bar.takeUntil(first))
.firstOrError()
.toObservable())
.subscribe(observer);
assertEquals(1, observer.valueCount());
assertEquals("FOO", observer.values().get(0));
}
我得到了:
junit.framework.com paremisonfailure:预期:foo实际:bar
用map
替换just
:
@Test
public void testMergeOperator() {
TestObserver<String> observer = new TestObserver<>();
Observable<String> foo = Observable.just("FOO");
Observable<String> bar = Observable.timer(2, TimeUnit.SECONDS).map(v -> "BAR");
foo.publish(first -> Observable.merge(first, bar.takeUntil(first))
.firstOrError()
.toObservable())
.subscribe(observer);
assertEquals(1, observer.valueCount());
assertEquals("FOO", observer.values().get(0));
}