Groovy 元类,模拟具有 throws 子句的服务方法
Posted
技术标签:
【中文标题】Groovy 元类,模拟具有 throws 子句的服务方法【英文标题】:Groovy metaclass, mocking a service method that has throws clause 【发布时间】:2016-12-15 07:57:27 【问题描述】:我有一个抽象服务:
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"
但这不起作用,调用总是从服务执行实际方法。这里需要做什么?我错过了什么吗?请注意,我只需要模拟一种方法,而不是整个服务。
【问题讨论】:
【参考方案1】:也许你可以在实例上模拟方法?
def child = new ChildService()
child.metaClass.someMethod = -> "Mocked method"
【讨论】:
我试图重现它并且它正在工作,所以它不工作的原因必须在其他地方。你能展示你的整个测试方法吗?您也可以尝试将“模拟方法”更改为映射。也许由于返回类型不匹配而无法正常工作?以上是关于Groovy 元类,模拟具有 throws 子句的服务方法的主要内容,如果未能解决你的问题,请参考以下文章