我是mvvm和rxbinding的新手。 我试图使用RxJava和DataBinding将我的ViewModel与android上下文完全分离。
当我单元测试ViewModel的一些代码(即表单验证)时,我的ObservableFields不会改变值,并且值保持为空。
我的ViewModel的最小示例:
component
我希望只要ObservableField用户名的值发生变化,就会设置ObservableField emailErrorVisibility
我的单位测试:
componentReference
在此测试中的行GameScene
之后,viewMode.emailErrorVisibility的值仍然不是。
我错误的是,值应该通过更改/设置用户名值来更新自己吗?
注意,toField(Observble)函数来自https://github.com/manas-chaudhari/android-mvvm/blob/master/android-mvvm/src/main/java/com/manaschaudhari/android_mvvm/FieldUtils.java
答案 0 :(得分:0)
数据绑定尝试在设置绑定值时有效。当值更改时,它会发布以确保您在设置所有值之前进行了更改。如果您仍在制作更改,则无需评估更改。
您可以使用executePendingBindings()
强制评估此类情况的绑定值:
viewModel.username.set("")
binding.executePendingBindings()
assertThat(viewModel.emailErrorVisibility.get(), equalTo(false))