如标题中所述,我正在尝试测试在发生错误后我的域名是否未被持久化。测试中的代码是:
//domain is created using mockDomain(DomainClass, [...])
domain.someField = newValue
domain.someProperty = invalidValue
if(!domain.hasErrors() && domain.save()) {
log.info "Saved."
} else {
//domain.refresh() or domain.discard() does not have a difference and domain still gets persisted after calling these
domain.errors.allErrors.each{
log.error "Error: $it"
}
}
我在单元测试中有类似的东西:
def domain = DomainClass.get(domain.id)
assertEquals(oldValue, domain.someField) // but now domain.someField is set to newValue
上面的代码在控制器保存操作中。在我的单元测试中,我使用mockDomain(DomainClass)来模拟域并将其发送到保存操作。因此,当我将someProperty
设置为invalidValue
时,代码正确进入else块,打印错误并保存返回null。但是,当我尝试断言我的域的值时,我在域中有错误这一事实,我收回了在其上设置的所有值,包括代码示例中显示的newValue
。我原以为如果我的域有一些错误,那么它就不会被持久化。任何人都可以解释一下这个以及如何让我的域名不被保留?