RxJava,如何为 disposable.clear() 编写测试代码?

RxJava, How can I write test code for disposable.clear()?

我正在开发一个 Android 应用程序。 我的应用基于 MVP 模式。

因此,当 Activity 的生命周期终止时,将调用演示者的 unsubscribe() 函数。

unsubscribe()函数只是清除'disposable'。 这是非常简单的代码,如下所示:

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

unsubscribe()功能很简单,所以之前没有测试过。 但是今天,我只想增加代码覆盖率。 所以我试着写了这个功能的测试代码。

我的第一次尝试是:

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

但是我不知道clear()函数是CompositeDisposableclass的函数,不是Disposable接口.

所以我不能将它用作模拟。

我使用 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())
}