RxJava,如何编写dispuse.clear()的测试代码?

时间:2019-02-19 04:57:47

标签: unit-testing junit mocking mockito rx-java

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

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

unsubscribe()函数仅清除“一次性”。 这是非常简单的代码,如下所示:

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

unsubscribe()函数非常简单,因此我之前没有对其进行测试。 但是今天,我只想增加代码覆盖率。 所以我试图为此功能编写测试代码。

我的第一次尝试是:

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

但是我不知道 clear() 函数是CompositeDisposable类的函数,而不是Disposable接口的函数。

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

1 个答案:

答案 0 :(得分:0)

我用disposable.size()解决了这个问题。

我将disposable更改为可设置/可注射。

结果是:

@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())
}