eijenson Con

主に作業中にはまったことの作業ログを書いていきます。

RxJava2へ移行時のUnitTest

RxJava1 から2へ移行すると、TestSubscriberがうまく使えなくなった。

代わりにObservar.test()というメソッドが追加された。

RxJava1

public void test(){
//...

        TestSubscriber<UserResult> testSubscriber = TestSubscriber.create();
        repository.getUser().subscribe(testSubscriber);
        testSubscriber.awaitTerminalEvent();
        testSubscriber.assertCompleted();
        UserResult result = testSubscriber.getOnNextEvents().get(0);

        assertEquals(result.getName(), "田中");
        assertEquals(result.getAge(), 13);
//...
}

RxJava2

public void test(){
//...

        UserResult result = repository
                .getUser()
                .test()
                .assertComplete()
                .assertValueCount(1)
                .values().get(0);

        assertEquals(result.getName(), "田中");
        assertEquals(result.getAge(), 13);
//...
}

メソッドチェーンで記述できることで、型指定の煩わしさが少なくなる。