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()
函数是CompositeDisposable
class的函数,不是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())
}
我正在开发一个 Android 应用程序。 我的应用基于 MVP 模式。
因此,当 Activity 的生命周期终止时,将调用演示者的 unsubscribe()
函数。
unsubscribe()
函数只是清除'disposable'。
这是非常简单的代码,如下所示:
override fun unsubscribe() {
disposable.clear()
}
unsubscribe()
功能很简单,所以之前没有测试过。
但是今天,我只想增加代码覆盖率。
所以我试着写了这个功能的测试代码。
我的第一次尝试是:
@Test
fun unsubscribeTest() {
mPresenter.unsubscribe()
verify(mockDisposable).clear()
}
但是我不知道clear()
函数是CompositeDisposable
class的函数,不是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())
}