【问题标题】:RxJava, How can I write test code for disposable.clear()?RxJava,如何为disposable.clear() 编写测试代码?
【发布时间】:2019-02-19 04:57:47
【问题描述】:

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

所以当Activity的生命周期终止时,会调用presenter的unsubscribe()函数。

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

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

unsubscribe()函数很简单,所以之前没有测试过。 但是今天,我只想增加代码覆盖率。 所以我尝试为这个函数编写测试代码。

我的第一次尝试是:

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

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

所以我不能用它来模拟。

【问题讨论】:

  • 为什么要验证 RxJava 本身?我们已经为您测试了CompositeDisposable
  • 我只是想增加我的 Presenter 代码覆盖率。 (Presenter.unsubscribe())

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2019-08-19
    • 2016-12-07
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多