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



我在测试中的控制器中有一个私有方法,我已经练习过了,只想在进一步的测试中进行模拟。在grails 2.3.4中,以下代码起作用:

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

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

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

groovy-per-instance metaClass方法重写在spock测试中未按预期工作

和链接的错误报告:

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

我试着给params添加类型,这看起来不太时髦,也没有什么不同。

从方法中删除"private"确实允许metaClass嘲讽工作,并通过测试用例。我不是很喜欢这个解决方案,但现在我只有它了。

最新更新