我想弄清楚按順序組合不同類型的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