android - LiveData 的 Transformations.map 不会在且仅在单元测试中被触发

标签 android unit-testing kotlin android-livedata

我有一个像这样的 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/

相关文章:

android - 我可以在 SimpleAdapter 上添加 header 吗?

android - Android Things bmx280 驱动程序中 Bmx280 和 Bmx280SensorDriver 类之间的区别?

spring - 在 TestNG 中使用 Mockito

kotlin - 为什么 Kotlin 允许编写没有参数的 main 函数?

android - ViewModelProviders 无法在我的 fragment 中工作

android - 如何将变量从可观察值返回到另一种可观察类型

android - 使用微调器时如何从 TextView 中获取文本

c# - 我可以在 Moq 中重用 It.Any 参数描述符吗

unit-testing - 扩展另一个类的phpunit测试类

Android Kotlin : Getting a FileNotFoundException with filename chosen from file picker?