2011-04-26 2 views
3

Grails 애플리케이션에서 서비스에 대한 단위 테스트를 작성하려고합니다. 'MyService'서비스는 $ APP-ROOT/src/groovy /에있는 'MyHelperClass'라는 클래스를 사용합니다. 이면 MyService에 대한 단위 테스트에서 Grails의 'src'폴더에서 클래스를 모의하는 법 (단위 테스트)

, 정말 같은 MyHelperClass에 대한 모의를 만들려고 :

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의 클래스 만 일어날 것 같다 :이 오류를 제공

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

/, 예를 들어 grails-app/services 클래스에서 잘 작동하는 것처럼 보입니다. 어떻게하면 src /에있는 클래스를 볼 수 있을지 알 수 있습니다.

감사합니다.

답변

3

코드는이를 지정하지 않지만, createMock 클래스가 디폴트 (인수 없음) 생성자가 조롱되는 것을 필요로 나타납니다.

/grails-app 아래의 일반 Grails 아티팩트는 모두 이걸 가지고 있지만,/src 아래의 다른 클래스는 그렇지 않을 수도 있습니다.

기본 생성자를 추가하면이 오류가 발생하여 오류가 수정되었습니다.

https://groups.google.com/forum/?fromgroups=#!topic/groovymn/u2Ng_RM224A도 이에 대한 관련 토론을 참조하십시오.