[英]RxJava test Observable
有類似TestSubscriber
東西。 它具有非常有用的功能,例如awaitTerminalEvent()
、 getOnNextEvents()
等。
是否有一個等效的TestSubscriber
for Observable
可以固定在序列中間的某個 observable 上?
我想測試一些具體案例,其中之一是:
我有一個在構造函數中接受Observable
的類。 其中一種方法是在onErrorResumeNext
操作符中調用Observable
。 所以在特定條件下執行主Observable
可能會調用經過測試的Observable
。 需要像assertExecuted
這樣的東西。
在上述情況下,我想測試執行Observable
Thread
。
我想知道, Observable
根據它的輸入返回了什么。
這些情況中的每一種都需要解決方法,例如:
observable
.doOnNext(o -> {
// Observable was given a value
});
如果沒有可用的好方法,如何使上面的調用更干凈?
斷言需要在作為 observable 一部分的 lambda 之外進行測試,因為 lambda 本身可能永遠不會運行(就像在onErrorResumeNext
情況下一樣)。 所以你需要在 observable 之外定義一些對象來攜帶我們想要測試的結果。
測試 observable 的常用技術是使用 Atomic 對象來記錄事件:
AtomicBoolean executed = new AtomicBoolean(false);
Observable
.empty()
.doOnNext(t -> executed.set(true))
.subscribe();
assertFalse(executed.get());
這個例子可以用TestSubscriber
更好地完成,但它展示了技術。
rxjava-extras如果您使用的是 Java 6(見鬼只使用 retrolambda),則具有便利的類,因此您無需為此用例編寫匿名類:
AtomicBoolean executed = new AtomicBoolean(false);
Observable
.empty()
.doOnNext(Actions.setToTrue(executed))
.subscribe();
assertFalse(executed.get());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.