RxJava, Как я могу написать тестовый код для одноразового.clear ()? - PullRequest
0 голосов
/ 19 февраля 2019

Я занимаюсь разработкой приложения для Android.Мое приложение основано на шаблоне MVP.

Таким образом, когда жизненный цикл действия заканчивается, вызывается функция докладчика unsubscribe().

Функция unsubscribe() просто очищает «одноразовые».Это очень простой код, как показано ниже:

override fun unsubscribe() {
    disposable.clear()
}

Функция unsubscribe() очень проста, поэтому я не проверял ее раньше.Но сегодня я просто хочу увеличить покрытие кода.Поэтому я попытался написать тестовый код для этой функции.

Моя первая попытка:

@Test
fun unsubscribeTest() {
    mPresenter.unsubscribe()
    verify(mockDisposable).clear()
}

Но я не знал, что функция clear() являетсяфункция класса CompositeDisposable, а не Disposable интерфейса.

Так что я не могу использовать его как макет.

1 Ответ

0 голосов
/ 19 февраля 2019

Я решил это, используя disposable.size().

Я изменил disposable на settable / injectable.

Итак, результат:

@Test
fun unsubscribeTest() {
    val d = CompositeDisposable()
    mPresenter.disposable = d

    assertEquals(0, mPresenter.disposable.size())

    d.add(Observable.just("").subscribe())
    assertEquals(1, mPresenter.disposable.size())

    mPresenter.unsubscribe()

    assertEquals(0, mPresenter.disposable.size())
}
...