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。可能是因为返回类型不匹配而不起作用?