2011-04-26 55 views
3

我想在我的Grails应用程序中编写一些服务的单元测试。服务'MyService'使用位于$ APP-ROOT/src/groovy /被称为'MyHelperClass'的类。如何在Grails中的'src'文件夹中模拟类(单元测试)

在用于为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 /中的类?

谢谢!

回答

3

代码不指定它,但createMock似乎需要该类被嘲笑有一个默认的(无参数)构造函数。

/grails-app下的正常Grails工件都有这些,而/ src下的某些其他类可能不会。

添加一个默认的构造函数修复了这个错误。

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

相关问题