我想对 LiveData 结果的序列进行单元测试。我有一个 result
LiveData,它在加载、成功或错误时发出值。我想测试它以确保首先发出加载值,然后发出成功或错误值。
有办法做到这一点吗?
最佳答案
是的,这是可能的,我将提供一个使用 mockk 的示例图书馆。假设您有一个 ViewModel 和一个 LiveData结果
。您必须添加一个模拟观察者(androidx.lifecycle.Observer),其值将被验证。在您的测试中,您将有一个类级变量
@MockK
lateinit var observer: Observer<Your_type_here>
然后在@Before(或者如果你只有一个测试,你可以将其粘贴到那里)函数中,你应该添加这个
viewModel.result.observeForever(observer)
every { observer.onChanged(any()) } just Runs
在测试中你会得到类似的东西
// given - your mocking calls here
// when
viewModel.doSomethingAndPostLiveDataResult()
// then
verifySequence {
observer.onChanged(Your_type_here)
observer.onChanged(Something_else)
}
关于android - 对单个实时数据发出的值的序列进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73090137/