grails枚举类型验证未按预期工作
我有一个单元测试在违反约束的情况下失败,这是不应该的。我正在测试是否将有效枚举设置为域类的变量 我的枚举:grails枚举类型验证未按预期工作,grails,enums,Grails,Enums,我有一个单元测试在违反约束的情况下失败,这是不应该的。我正在测试是否将有效枚举设置为域类的变量 我的枚举: public enum GenderPreference { M('Male'), F('Female'), A('Any') final String value GenderPreference(String value) { this.value = value } public String toStrin
public enum GenderPreference {
M('Male'),
F('Female'),
A('Any')
final String value
GenderPreference(String value) {
this.value = value
}
public String toString() {
value
}
public String getKey() {
name()
}
public String getValue() {
value
}
}
我的域名:
class Profile {
GenderPreference genderPreference
static constraints = {
genderPreference (blank:true, nullable:true)
}
}
我的单元测试:
工作正常:
def instance = new Profile(genderPreference: GenderPreference.M)
assertTrue instance.validate(['genderPreference'])
这应该失败,但不会。QQQ不是有效的枚举
instance = new Profile(genderPreference: 'QQQ')
assertFalse instance.validate(['genderPreference'])
我正在使用Grails2.2.4。我认为在旧版本中,必须在枚举的域约束中添加其他内容,但我认为这应该是可行的。缺少什么?您可以使用inList向枚举添加约束
static constraints = {
genderPreference blank:true, nullable:true,
inList: GenderPreference.values() as List
}
可以使用inList向枚举添加约束
static constraints = {
genderPreference blank:true, nullable:true,
inList: GenderPreference.values() as List
}
虽然这样做有效,但这意味着我必须复制我拥有的每个枚举类的所有值。有些有10个或15个条目,而不是在约束中列出所有条目,必须有一种更简洁的方式。虽然这样做有效,但这意味着我必须为我拥有的每个枚举类复制所有值。有些有10或15个条目,而不是在约束中列出它们,必须有一种更简洁的方式。我只是复制了你的代码,测试了它,一切都按预期进行。你真的是说第二次测试应该失败还是验证应该失败?我只是复制了你的代码,测试了它,一切都按预期进行了。你的意思是第二次测试应该失败,还是验证应该失败?