为什么合并操作员没有返回其收到的第一个可观察的可观察到的



我的理解是,我可以将合并操作员与其他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));
}

最新更新