我想像往常一样模拟一个域(mockDomain(Class)
),但我想覆盖域的方法之一(beforeDelete
具体来说)仅针对该单元测试使用自定义逻辑。
如何才能实现这一目标?
您可以使用 Groovy 元类重写域类上的 beforeDelete 方法。
域类:
class Person {
String name
boolean deleted
def beforeDelete() {
println "Deleting Person ${id}"
deleted = true
return false
}
}
单元测试:
void testBeforeDelete() {
mockDomain(Person)
def p = new Person(name:"test")
p.save()
assertEquals false, p.deleted
p.delete()
assertEquals true, p.deleted
}
--testBeforeDelete 的输出--
删除人员 1
void testBeforeDeleteOverrideBeforeDelete() {
mockDomain(Person)
Person.metaClass.'static'.beforeDelete = {println 'Do not touch me'}
def p = new Person(name:"test")
p.save()
assertEquals false, p.deleted
p.delete()
assertEquals true, p.deleted
}
--testBeforeDeleteOverrideBeforeDelete 的输出--
不要碰我
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)