Unit testing RxJava,如何为一次性.clear()编写测试代码?

Unit testing RxJava,如何为一次性.clear()编写测试代码?,unit-testing,junit,mocking,mockito,rx-java,Unit Testing,Junit,Mocking,Mockito,Rx Java,我正在开发一个Android应用程序。 我的应用程序基于MVP模式 因此,当活动的生命周期终止时,将调用演示者的unsubscribe()函数 unsubscribe()函数只需清除“一次性”即可。 下面是非常简单的代码: override fun unsubscribe() { disposable.clear() } unsubscribe()函数非常简单,所以我以前没有测试过它。 但今天,我只想增加代码覆盖率。 所以我试着为这个函数编写测试代码 我的第一次尝试是: @Test f

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

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

unsubscribe()
函数只需清除“一次性”即可。 下面是非常简单的代码:

override fun unsubscribe() {
    disposable.clear()
}
unsubscribe()
函数非常简单,所以我以前没有测试过它。 但今天,我只想增加代码覆盖率。 所以我试着为这个函数编写测试代码

我的第一次尝试是:

@Test
fun unsubscribeTest() {
    mPresenter.unsubscribe()
    verify(mockDisposable).clear()
}
但是我不知道
clear()
函数是
CompositeDisposable
类的函数,而不是
一次性的
接口


所以我不能用它来模拟。

我用
一次性.size()
解决了这个问题

我将一次性更改为可设置/可注射

因此,结果是:

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

我使用
一次性.size()
解决了这个问题

我将一次性更改为可设置/可注射

因此,结果是:

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

为什么要验证RxJava本身?我们已经为您测试了
CompositeDisposable
。我只想增加演示者代码的覆盖率。(Presenter.unsubscribe())为什么要验证RxJava本身?我们已经为您测试了
CompositeDisposable
。我只想增加演示者代码的覆盖率。(演示者。取消订阅())