我一直在面对一个测试我们的业务逻辑的问题部门。问题是当我想对实时数据的所有排放进行单元测试时。现在,我只获得了最后一个发出的值,但我想对每个发出的所有值进行单元测试。
这是我的粗略设置。
这是我的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仅保留接收到的最后一个值,但我想知道是否有任何我们可以对排放进行一次单位测试。