2

给定一个这样的域星座:

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

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

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

4

2 回答 2

1

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

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

class B extends A { 
    def beforeInsert() { 
        super.beforeInsert() 
    } 
}
于 2015-05-29T00:35:01.373 回答
0

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

B.metaClass.beforeInsert = {-> }
于 2012-11-16T18:28:59.413 回答