即使对save的调用返回false或null,Mock域仍然存在于单元测试中

时间:2014-12-04 12:59:31

标签: unit-testing grails gorm

如标题中所述,我正在尝试测试在发生错误后我的域名是否未被持久化。测试中的代码是:

//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。我原以为如果我的域有一些错误,那么它就不会被持久化。任何人都可以解释一下这个以及如何让我的域名不被保留?

0 个答案:

没有答案