android - 对单个实时数据发出的值的序列进行单元测试

标签 android unit-testing testing android-livedata android-architecture-components

我想对 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/

相关文章:

android - Cordova 表单不提交或按钮不工作 (android +4.4)

c# - 如何对执行异步方法的 RelayCommand 进行单元测试?

go - 你如何在 GoLang 的模拟中模拟错误返回值?

android - 在运行时更改区域设置不影响 fragment

java - Listview headerView 和拉动刷新 - android

java - fragment 添加不起作用

Android Test测试前提条件

javascript - 涉及 API 的单元测试

django - 如何运行 Django 项目级测试?

ruby-on-rails-3 - 查找慢速 rspec 测试列表