在GXT中的setValidator()之后,在Field上的单元测试中调用validate()

时间:2012-12-07 13:14:44

标签: unit-testing textfield validation gxt

我使用setValidator()在TextField上设置了Validator。运行应用程序时,输入验证正常。

在针对我的GUI编写单元测试时,我在TextField上设置验证器,然后将值设置为无效值。但是当我在TextField上调用isValid()或validate()时,它总是返回true。

在TextField上调用validator.validate及其值时,返回false。

我是否误解了TextField上的isValid()和validate()方法?或者,在我的测试中,我需要在验证开始之前触发一些事件吗?

1 个答案:

答案 0 :(得分:0)

检查了源代码,从我看到的validate()和isValid()方法中,都使用getRawValue()检查值,该值是HTML元素中呈现的值,并且尝试直接设置原始值仍然是失败,因为它检查渲染的标志,需要调用render()。

public String getRawValue() {
    String v = rendered ? getInputEl().getValue() : "";
    if (v == null || v.equals(emptyText)) {
      return "";
    }
    return v;
}

解决方案是将TextField子类化并覆盖这些方法,但我宁愿坚持调用validator.validate()。