RxObserverのテスト
RxJavaの話です
Rxでテストをする時はObservableがtestメソッドを持っているのでこの返却値を使います。
val test = Observable.fromArray(1, 2, 3, 4) .filter { it % 2 == 0 } .test()
testはTestObserverであり、自身にいくつかのassertionを持っているので UnitTest時に使うことで表明する事ができます。
//errorが発生しないことを表明 test.assertNoErrors() //流れてきたイベント値の表明 test.assertValueAt(0) { it == 2 } test.assertValueAt(1) { it == 4 } //completeしていることを表明 test.assertComplete()
流れてくる値が1つだけなら test.assertValue((T) -> Boolean)も使うことが出来ます。
いつでも正しいコードと言えるように RxでもTestを書いていきましょう。
全体のコードです
@Test fun filterOfEvalTest() { val test = Observable.fromArray(1, 2, 3, 4) .filter { it % 2 == 0 } .test() //errorが発生しないことを表明 test.assertNoErrors() //流れてきたイベント値の表明 test.assertValueAt(0) { it == 2 } test.assertValueAt(1) { it == 4 } //completeしていることを表明 test.assertComplete() }