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方法进行接口。我正在努力想办法解决这个问题。