TestObserverとTestSubscriber

  • 9
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

RxJava 1.1にて,いままでExperimentalだったTestObserverTestSubscriverがbetaになりました.
どちらもインスタンスをsubscribe()の引数に渡してあげて使います.

TestObserver

何をするの?

  • onNextonErroronCompleteの各イベントをすべて記録してくれる
  • 記録したうえで別のObserverに処理を移譲できる
  • 記録したイベントのassertionができる

APIs

  • getOnCompletedEvents() / getOnErrorEvents() / getOnNextEvents() / getEvents()
    • 発生イベントのgetter
  • assertReceivedOnNext(List<T> items)
    • onNextで意図通りのイベントが流れているかの検査
  • assertTerminalEvent()
    • terminal event(onError or onComplete)が1つだけ発生したかどうか

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
  • 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)
    • onNextcount回呼ばれたかどうかの検査
  • assertValues(T... values)
    • assertReceivedOnNext()の可変長引数ver.
  • assertValue(T)
    • assertReceivedOnNext()の引数が1つだけver.

References

この投稿は RxJava Advent Calendar 201510日目の記事です。