【问题标题】:How to mock classes in 'src' folder in Grails (unit testing)如何在 Grails 的“src”文件夹中模拟类(单元测试)
【发布时间】:2011-08-13 06:16:30
【问题描述】:

我正在尝试为我的 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/ 中的类吗?

谢谢!

【问题讨论】:

    标签: unit-testing grails groovy mocking


    【解决方案1】:

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

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

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

    另请参阅https://groups.google.com/forum/?fromgroups=#!topic/groovymn/u2Ng_RM224A 了解相关讨论。

    【讨论】:

      【解决方案2】:

      这个答案应该会给你你需要的信息。

      Mocking out constructors in Grails

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        • 2015-01-11
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多