LoginSignup
9
9

More than 5 years have passed since last update.

TestObserverとTestSubscriber

Last updated at Posted at 2015-12-19

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

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9