结合RxJava对LiveData排放进行单元测试

时间:2020-05-30 16:35:19

标签: android unit-testing mvvm rx-java viewmodel

我一直在面对一个测试我们的业务逻辑的问题部门。问题是当我想对实时数据的所有排放进行单元测试时。现在,我只获得了最后一个发出的值,但我想对每个发出的所有值进行单元测试。

这是我的粗略设置。

这是我的viewModel onSaveEvent点击事件的样子

        disposable.add(finalSource
        .observeOn(schedulerProvider.ui())
            .doOnSubscribe {
                // show spinner
                _myLiveData.value = Loading(toShow = true, loadingMessage = "Loading")
            }
            .doAfterTerminate {
                // remove spinner
                _myLiveData.value = Loading(toShow = false)

            }
            .subscribe { resource ->
                // Update either on success or error.
                _myLiveData.value = resource
        }
    )

我的视图模型测试看起来像这样。

@Test
fun testOnSaveEvent() {
    // Other setup code.
    Mockito.`when`(myRepo.onSave()).thenReturn(mockSingle)
    myViewModel.onSaveEvent(salesTaxCompanyInfo)

    testScheduleProvider.ui().triggerActions()

    // I see that the value is of type Loading
    val firstValue = myViewModel.myLiveData.getOrAwaitValue()

    // The next value is also Loading, although I would like to see the success event.
    val secondValue = myViewModel.myLiveData.getOrAwaitValue()
}

理想情况下,我正在以下列表中的TestCoroutineDispatcher行中寻找内容:https://medium.com/androiddevelopers/testing-two-consecutive-livedata-emissions-in-coroutines-5680b693cbf8

虽然我了解LiveData仅保留接收到的最后一个值,但我想知道是否有任何我们可以对排放进行一次单位测试。

0 个答案:

没有答案