grails - 如何在 grails 3.3.8 中模拟被测 Controller 的方法

标签 grails mocking metaclass

我在测试的 Controller 中有一个私有(private)方法,我已经练习过,只是想在进一步的测试中进行模拟。在 grails 2.3.4 中,以下代码有效:

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

但是在grails 3.3.8这似乎没有效果,它使用了实际的 Controller 方法。我如何在 grails 3.3.8 中模拟这个?

最佳答案

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

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

和链接的错误报告:

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

我尝试将类型添加到参数中,这似乎不是很时髦,而且无论如何也没有什么不同。

从方法中删除“私有(private)”确实允许元类模拟工作并且测试用例通过。我不是很喜欢那个解决方案,但现在这就是我所拥有的。

关于grails - 如何在 grails 3.3.8 中模拟被测 Controller 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53766905/

相关文章:

grails - Grails的域read()函数是否使用二级缓存?

python - 如何单元测试/模拟 requests.get(url) 及其响应

unit-testing - 让 Go 函数接受不同的结构作为方法的输入

python - 如何检查一个方法是类方法还是元类中的静态方法?

swift - 我可以在 Swift 中将元类对象转换为协议(protocol)类型吗?

python - 使用元类设置时,Django 迁移忽略 db_table

java - 创建名称为 'transactionManagerPostProcessor' : Initialization of bean failed 的 bean 时出错

grails - 带有警告 "too much output to process"的 grails 应用程序的 Intellij IDEA 长时间处理

grails - Grails使用config.properties值进入BuildConfig.groovy

Angular 5(Karma/Jasmine 测试)- 使用模拟后端来模拟错误消息的错误响应