Android LiveData';s Transformations.map未在单元测试中触发,且仅在单元测试中触发
我有这样一个ViewModel:Android LiveData';s Transformations.map未在单元测试中触发,且仅在单元测试中触发,android,unit-testing,kotlin,android-livedata,Android,Unit Testing,Kotlin,Android Livedata,我有这样一个ViewModel: 类MyViewModel{ val title=MutableLiveData() val onTitleError:LiveData=Transformations.map(标题,this::validateTitle) } 问题是在单元测试转换期间执行时。map永远不会由title值更改触发。例如: val viewModel=MyViewModel() viewModel.title.value=“123” Assert.assertEquals(vie
类MyViewModel{
val title=MutableLiveData()
val onTitleError:LiveData=Transformations.map(标题,this::validateTitle)
}
问题是在单元测试转换期间执行时。map
永远不会由title
值更改触发。例如:
val viewModel=MyViewModel()
viewModel.title.value=“123”
Assert.assertEquals(viewModel.onTitleError.value、R.string.myError)
我将此规则用于LiveData测试:
@规则
var liveDataRule:TestRule=InstantTaskExecutorRule()
在检测测试或正常运行期间执行时,一切正常
以@ianhanniballake-answer为例,我刚刚添加了viewModel.ontitlerror.observeForever{}
,然后上面的代码片段应该如下所示:
val viewModel=MyViewModel()
viewModel.onTitleError.ObserveForRever{}
viewModel.title.value=“123”
Assert.assertEquals(viewModel.onTitleError.value、R.string.myError)
你需要观察你的ontitlerror
LiveData,让它填充它的值你需要观察你的ontitlerror
LiveData,让它填充它的值你在哪里观察你的ontitlerror
。它提供了一个TestObserver
,它不仅可以处理你的observeforver()
位,还可以添加一系列关于观察者所看到的内容的断言。非常好的lib@commonware。你在哪里观察你的onTitleError
?FWIW,我是它的粉丝。它提供了一个TestObserver
,它不仅可以处理您的observeforver()
位,还可以添加一系列关于观察者所看到的内容的断言。非常好的库,@commonware。