如何在Grails 3.3.8中模拟被测控制器的方法

时间:2018-12-13 17:09:57

标签: grails mocking metaclass

我在被测试的控制器中有一个私有方法,只想在进一步的测试中进行模拟。在grails 2.3.4中,以下代码有效:

controller.metaClass.method = { a, b -> 'value' }

但是在grails 3.3.8中,这似乎没有效果,它使用了实际的控制器方法。如何在grails 3.3.8中对此进行模拟?

1 个答案:

答案 0 :(得分:0)

我终于在这里找到了一些信息:

groovy per instance metaClass method override doesnt work as expected in spock test

和链接的错误报告:

https://issues.apache.org/jira/browse/GROOVY-7368

我尝试将类型添加到看起来不太时髦且没有任何作用的参数中。

从方法中删除“ private”确实允许metaClass模拟工作并通过测试用例。我不是很喜欢这种解决方案,但是现在这就是我所拥有的全部。