RxJava 1.1にて,いままでExperimentalだったTestObserverとTestSubscriverがbetaになりました.
どちらもインスタンスをsubscribe()の引数に渡してあげて使います.
TestObserver
何をするの?
-
onNext,onError,onCompleteの各イベントをすべて記録してくれる - 記録したうえで別の
Observerに処理を移譲できる - 記録したイベントのassertionができる
APIs
-
getOnCompletedEvents()/getOnErrorEvents()/getOnNextEvents()/getEvents()- 発生イベントのgetter
-
assertReceivedOnNext(List<T> items)-
onNextで意図通りのイベントが流れているかの検査
-
-
assertTerminalEvent()- terminal event(
onErrororonComplete)が1つだけ発生したかどうか
- terminal event(
TestSubscriber
何をするの?
-
Subscriber<T>及びSubscriptionのサブクラス -
TestObserverを内部に持つ
APIs
-
TestObserverの各メソッド-
TestSubscriberが保持するTestObserverのインスタンスに移譲している
-
-
assertUnsubscribed()- unsubscribedされているかの検査
-
assetNoErrors()- エラーが発生していないかの検査
-
awaitTerminalEvent()/awaitTerminalEvent(long timeout, TimeUnit unit)- terminal eventが発生するまで待ってくれる
- (内部で
CountDownLatchを保持している)
-
awaitTerminalEventAndUnsubscribeOnTimeout(long timeout, TimeUnit unit)- timeoutしたらunsubscribeしてくれるタイプの
awaitTerminalEvent
- timeoutしたらunsubscribeしてくれるタイプの
-
getLastSeenThread()- 最後に発生したイベントのthreadを返す
-
assertCompleted()/assertNotCompleted()-
onCompleteが1回以上呼ばれているか・呼ばれていないか
-
-
assertError(Class<? extends Throwable> clazz)/assertError(Throwable throwable)- そのエラーが1回呼ばれたか
- 2回以上エラーが発生していても
AssertionError
-
assertNoTerminalEvent()- terminal eventが呼ばれていないことの検査
-
assertNoValues()-
onNextが呼ばれていないことの検査
-
-
assertValueCount(int count)-
onNextがcount回呼ばれたかどうかの検査
-
-
assertValues(T... values)-
assertReceivedOnNext()の可変長引数ver.
-
-
assertValue(T)-
assertReceivedOnNext()の引数が1つだけver.
-