Groovy元类,模拟一个具有throws子句的服务方法

时间:2016-08-09 10:09:54

标签: grails testing groovy metaclass throws

我有一个抽象的服务:

abstract class ParentService {    
    abstract Map someMethod() throws NumberFormatException    
}

另一项服务超越了课程:

class ChildService extends ParentService {
    @Override        
    Map someMethod() throws NumberFormatException {
        //Business Logic
    }
}

我想使用groovy metaClass来模拟someMethod()。我需要模拟这个方法来编写ChildService的测试用例。这就是我为嘲笑所做的事情:

ChildService.metaClass.someMethod = { -> "Mocked method" }
但这不起作用,并且调用始终从服务执行实际方法。这需要做什么?我错过了什么吗? 请注意,我必须模拟一种方法而不是整个服务。

1 个答案:

答案 0 :(得分:0)

也许你只能在实例上模拟方法?

def child = new ChildService()
child.metaClass.someMethod = { -> "Mocked method" }