我使用setValidator()在TextField上设置了Validator。运行应用程序时,输入验证正常。
在针对我的GUI编写单元测试时,我在TextField上设置验证器,然后将值设置为无效值。但是当我在TextField上调用isValid()或validate()时,它总是返回true。
在TextField上调用validator.validate及其值时,返回false。
我是否误解了TextField上的isValid()和validate()方法?或者,在我的测试中,我需要在验证开始之前触发一些事件吗?
答案 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()。