ObservableField值未更改传播

时间:2017-11-06 13:40:37

标签: android mvvm kotlin rx-java android-databinding

我是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

1 个答案:

答案 0 :(得分:0)

数据绑定尝试在设置绑定值时有效。当值更改时,它会发布以确保您在设置所有值之前进行了更改。如果您仍在制作更改,则无需评估更改。

您可以使用executePendingBindings()强制评估此类情况的绑定值:

    viewModel.username.set("")
    binding.executePendingBindings()
    assertThat(viewModel.emailErrorVisibility.get(), equalTo(false))