gpt4 book ai didi

unit-testing - 如何模拟 Grails 中 'src' 文件夹中的类(单元测试)

转载 作者:行者123 更新时间:2023-12-04 04:39:29 24 4
gpt4 key购买 nike

我正在尝试为我的 Grails 应用程序中的服务编写一些单元测试。服务“MyService”使用位于 $APP-ROOT/src/groovy/中的名为“MyHelperClass”的类。

在 MyService 的单元测试中,我尝试像这样为 MyHelperClass 创建一个模拟:

def myHelperClassMock = mockFor(MyHelperClass)
def myService = new MyService()
myService.myHelperClass = myHelperClassMock.createMock()

这给出了错误:

Error casting map to com.mycompany.myproject.MyHelperClass, Reason: Could not find matching constructor for: com.mycompany.myproject.MyHelperClass()
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Error casting map to com.mycompany.myproject.MyHelperClass, Reason: Could not find matching constructor for: com.mycompany.myproject.MyHelperClass()
at grails.test.GrailsMock.createMock(GrailsMock.groovy:91)
at grails.test.GrailsMock$createMock.call(Unknown Source)
at com.mycompany.myproject.MyServiceTests.testSomething(MyServiceTests.groovy:17)

这似乎只发生在 src/中的类中,并且对于 grails-app/services 中的类似乎工作正常。知道如何让它看到 src/中的类吗?

谢谢!

最佳答案

代码没有具体说明,但 createMock 似乎要求被模拟的类具有默认(无参数)构造函数。

/grails-app 下的普通 Grails 工件都有这些,而/src 下的一些其他类可能没有。

添加默认构造函数修复了我遇到此问题时的错误。

另见 https://groups.google.com/forum/?fromgroups=#!topic/groovymn/u2Ng_RM224A对此进行相关讨论。

关于unit-testing - 如何模拟 Grails 中 'src' 文件夹中的类(单元测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5794467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com