Не реагировать на Throwable в Unit тестах

Использую:

  1. Mockito (3.4.0)

  2. JUnit4

  3. LiveData (android arch components)

  4. ViewModel (android arch components)

  5. RxJava

Тест настроен следующим образом

    @get:Rule
    var rule: TestRule = InstantTaskExecutorRule()
    @Before
    fun setUp() {
        val hook = object : RxAndroidSchedulersHook() {
            override fun getMainThreadScheduler(): Scheduler {
                return Schedulers.trampoline()
            }
        }
        RxAndroidPlugins.getInstance().registerSchedulersHook(hook)
        RxJavaHooks.setOnNewThreadScheduler { Schedulers.trampoline() }
        RxJavaHooks.setOnIOScheduler { Schedulers.trampoline() }
        RxJavaHooks.setOnComputationScheduler { Schedulers.trampoline() }
    
    }

Необходимо протестировать следующий код(момент попадания в блок catch):

interactor.getData()
    .observeOn(AndroidSchedulers.mainThread())
    .doOnSubscribe { state.value = State.Loading }
    .subscribe({ 
        state.value = State.Data(items = it)
    }, {
        state.value = State.Error
    })

Мне нужно протестировать, что если в Рх цепочке произошел Exception, то LiveData "state" приняла значение State.Error (но у меня тест сразу отваливается т.к. произошел экзепшен)

Как все таки протестировать?


Ответы (0 шт):