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

Grails Groovy元类,模拟具有throws子句的服务方法,grails,testing,groovy,metaclass,throws,Grails,Testing,Groovy,Metaclass,Throws,我有一个抽象服务: abstract class ParentService { abstract Map someMethod() throws NumberFormatException } 以及另一项扩展到以上级别的服务: class ChildService extends ParentService { @Override Map someMethod() throws NumberFormatException {

我有一个抽象服务:

abstract class ParentService {    
    abstract Map someMethod() throws NumberFormatException    
}
以及另一项扩展到以上级别的服务:

class ChildService extends ParentService {
    @Override        
    Map someMethod() throws NumberFormatException {
        //Business Logic
    }
}
我想使用groovy元类模拟
someMethod()
。我需要模拟这种方法来为
ChildService
编写测试用例。这就是我为嘲弄所做的:

ChildService.metaClass.someMethod={->“Mocked-method”}

但这不起作用,调用总是从服务执行实际方法。这里需要做什么?我错过什么了吗?

请注意,我必须只模拟一个方法,而不是整个服务。

也许您可以在实例上模拟方法

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

我试着复制它,但它确实起作用了,所以它不起作用的原因一定是在别的地方。你能展示一下你的整个测试方法吗?您还可以尝试将“Mocked方法”更改为map。可能是因为返回类型不匹配而不起作用?