我已经使用setValidator()在TextField上设置了一个验证器。当我运行应用程序时,可以很好地验证输入。
在针对我的图形用户界面编写单元测试时,我在TextField上设置了验证器,然后将值设置为无效值。但是,当我在TextField上调用isValid()或validate()时,它总是返回true。
当使用它的值调用TextField上的validator.validate时,它返回false。
我是不是误解了TextField上的isValid()和validate()方法?或者,在我的测试中,我需要在验证开始之前触发一些事件吗?
发布于 2012-12-07 15:00:32
检查了源代码,从我所看到的情况来看,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()。
https://stackoverflow.com/questions/13763835
复制