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(
onError
oronComplete
)が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.
-