我有一个像这样的 ViewModel:
class MyViewModel {
val title = MutableLiveData<String>()
val onTitleError: LiveData<Int?> = Transformations.map(title, this::validateTitle)
}
问题是在单元测试期间执行时,Transformations.map
永远不会由title
值更改触发。例如:
val viewModel = MyViewModel()
viewModel.title.value = "123"
Assert.assertEquals(viewModel.onTitleError.value, R.string.myError)
我使用此规则进行 LiveData 测试:
@Rule
var liveDataRule: TestRule = InstantTaskExecutorRule()
在仪器测试期间执行或正常运行时,一切正常。
只是举例说明 @ianhanniballake 答案,我刚刚添加了 viewModel.onTitleError.observeForever { }
,那么上面的代码 fragment 应如下所示:
val viewModel = MyViewModel()
viewModel.onTitleError.observeForever { }
viewModel.title.value = "123"
Assert.assertEquals(viewModel.onTitleError.value, R.string.myError)
最佳答案
您需要观察
您的onTitleError
LiveData以使其填充其值
。
关于android - LiveData 的 Transformations.map 不会在且仅在单元测试中被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62123541/