我想弄清楚按顺序组合不同类型的observables然后比较结果的最佳方法。看着zip和combineLatest,我不认为他们是合适的。我怎样才能做到以下几点?RxJava结合observables并与以前的值进行比较
@Test
public void shouldInsertRecord(){
BidsEntity bid = new BidsEntity(/* omitted */);
Observable<Integer> count1 = bidsRepository.getBid(bid.getUserId(), bid.getListingId()).count();
Observable<Boolean> insert = bidsRepository.insertBid(bid);
Observable<Integer> count2 = bidsRepository.getBid(bid.getUserId(), bid.getListingId()).count();
//run count1, run insert, run count2 in that order
//assert that count2 is greater than count1
}
你的代码有很多不相关的东西。由于组合的结果,您期望的顺序也不清楚。相反,您可以简单地提供输入序列示例和预期的组合输出序列。 – yurgis
嗨@yurgis,我不知道什么是不相关的 - 我试图做三个操作,并比较操作1和操作3的结果。 –
好吧,我只是注意到你似乎运行单元测试而不是生产代码。在这种情况下,你只需要将Blocking()。singleOrDefault()应用到所有3个可观察对象。在测试代码中使用阻塞是完全正确的。另一个选项是在异步调用之前将CountDownLatch设置为3,在onNext中为所有3个可观察对象调用countDown,并捕获AtomicIntegers和AtomicBoolean中的值。异步调用后,有latch.await()将阻塞,直到所有值到达你的原子变量。 – yurgis