【问题标题】:How to unit test coruotine with livedata如何使用 livedata 对协程进行单元测试
【发布时间】:2020-12-08 08:50:33
【问题描述】:

在使用 mockK 学习单元测试的过程中,我遇到了这种情况:

MyViewModel:

private val _spinner: MutableLiveData<Boolean> = MutableLiveData()

val getSpinner : LiveData<Boolean>
get() = _spinner

fun launchCoruotine() {
    viewModelScope.launch {
        repository.refreshTitle()
        _spinner.value = true
    }
} 

虚拟仓库:

suspend fun refreshTitle() {
    delay(4000)
}

如何为_spinner编写单元测试,刷新标题返回后它的值是否改变

提前致谢!

【问题讨论】:

    标签: android mockito mockk mockito-kotlin android-unit-testing


    【解决方案1】:

    您可以使用此测试来验证在调用 launchCoroutine() 后微调器 LiveData 值是否已更改为 true:

    @Test
    fun spinnerTest() = runBlockingTest {
        val observer = mockk<Observer<Boolean>>()
        viewModel.getSpinner.observeForever(observer)
    
        viewModel.launchCoroutine()
    
        verify { observer.onChanged(true) }
    }
    

    【讨论】:

    • 它给了我错误:没有找到答案:Dependancy1(dependancy1#1).getGetSpinner()
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2019-12-17
    • 2019-04-15
    • 2021-08-09
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多