Unit testing Grails:模拟hibernate域操作-在插入之前

Unit testing Grails:模拟hibernate域操作-在插入之前,unit-testing,grails,grails-2.0,grails-domain-class,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中插入()之前? -A中的beforeInsert()在单元测试或 通过

给定这样的域星座:

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

class B extends A { 
    def beforeInsert() { 
        super.beforeInsert() 
    } 
}
是否可以模拟以下方法: -在B中插入()之前?
-A中的beforeInsert()在单元测试或 通过元类在插入之前重写:

B.metaClass.beforeInsert = {-> }

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

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

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

你测试过这个吗?Grails似乎会破坏您所做的任何元类更新。实际上,为了澄清上述问题,Grails的较新版本似乎使用AST转换与hibernate方法进行接口。我正在努力想办法解决这个问题。