1
我有一個域,其中有兩個字段可以爲空,但不能同時爲兩個。因此,像這樣Grails域驗證器:兩個字段可以爲空,但不能同時爲空
class Character {
Association association
String otherAssociation
static constraints = {
association (validator: {val, obj-> if (!val && !obj.otherAssociation) return 'league.association.mustbeone'})
otherAssociation (validator: {val, obj-> if (!val && !obj.association) return 'league.association.mustbeone'})
}
}
但是當我運行測試,如下面,我只能得到失敗
void testCreateWithAssociation() {
def assoc = new Association(name:'Fake Association').save()
def assoccha = new Character(association:assoc).save()
assert assoccha
}
void testCreateWithoutAssociation() {
def cha = new Character(otherAssociation:'Fake Association').save()
assert cha
}
我在做什麼錯?
編輯 它看起來像如果我打破了我的代碼弄成這個樣子:
def assoc = new Association(name:'Fake Association')
assoc.save()
,一切工作正常。但是現在我想知道爲什麼我不能在同一行中保存.save(),因爲我在其他測試中這樣做,並且它可以工作。
你能肯定嗎?嘗試將.save()放回與之前相同的行。也許你的班級或其他代碼沒有被重新加載或者其他的改變。很難相信這個改變會影響測試用例。 – 2013-05-09 06:34:47
如果域驗證失敗,'.save()'方法返回'false',並且如果域驗證通過,則返回域類。只是FYI – 2013-05-10 13:55:57