Grails:模拟hibernate域操作 - beforeInsert

时间:2012-11-16 08:50:15

标签: unit-testing grails grails-2.0 grails-domain-class

给出这样的域名星座:

abstract class A { 
    def myService 
    def beforeInsert() { 
        myService.doIt() 
    } 
} 

class B extends A { 
    def beforeInsert() { 
        super.beforeInsert() 
    } 
}

是否可以模拟以下方法: - B中的beforeInsert()? - 在A?

中的beforeInsert()

2 个答案:

答案 0 :(得分:1)

为使单元测试的服务方法调用可选,最简单的方法是使用空安全方法调用:

abstract class A { 
    def myService 
    static transients = ['myService']
    def beforeInsert() { 
        myService?.doIt() 
    } 
} 

class B extends A { 
    def beforeInsert() { 
        super.beforeInsert() 
    } 
}

答案 1 :(得分:0)

在单元测试中保存B对象而不刷新或 通过metaClass覆盖beforeInsert:

B.metaClass.beforeInsert = {-> }