【问题标题】:Stubbing all methods of a groovy class?存根一个 groovy 类的所有方法?
【发布时间】:2011-08-22 12:17:16
【问题描述】:
有没有一种简单的方法来存根 groovy 类的所有方法?在我的一项测试中,我需要确保某个代码路径根本不会触及服务。
也就是说,我想像这样模拟每个方法:
[meth1: {-> fail(msg)},
meth2: {-> fail(msg)...}] as MyService
有没有一种简单的方法来存根和拦截所有参数类型的所有方法并执行一些像这样的统一操作?
【问题讨论】:
标签:
testing
grails
groovy
mocking
stub
【解决方案1】:
我能想到的最简单的方法是这样的:
MyService.metaClass.invokeMethod { String name, args ->
assert false
}
【解决方案2】:
如果MyService 是一个接口,你可以这样做:
MyService stub = {Object[] args -> fail(msg)} as MyService
我不确定当MyService 是一个类时这是否有效