0

我使用 setValidator() 在 TextField 上设置了验证器。当我运行应用程序时,输入得到很好的验证。

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

当使用其值在 TextField 上调用 validator.validate 时,它​​返回 false。

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

4

1 回答 1

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() 。

于 2012-12-07T15:00:32.117 回答