Unit testing RxJava,如何为一次性.clear()编写测试代码?
我正在开发一个Android应用程序。 我的应用程序基于MVP模式 因此,当活动的生命周期终止时,将调用演示者的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
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
。我只想增加演示者代码的覆盖率。(演示者。取消订阅())