gpt4 book ai didi

unit-testing - 在 grails 中使用 mockDomain 时如何覆盖方法的逻辑?

转载 作者:行者123 更新时间:2023-12-02 13:58:59 25 4
gpt4 key购买 nike

我想像往常一样用一切来模拟域( 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 的输出--

别碰我

关于unit-testing - 在 grails 中使用 mockDomain 时如何覆盖方法的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com