2011-02-24 45 views
3

我正在学习groovy/grails,并编写我的第一个集成测试。Grails - 保存()在集成测试中与MissingMethodExcepition失败

它目前与失败:

groovy.lang.MissingMethodException:法无 签名: com.mangofactory.scurry.User.save()是 适用于参数类型:() 值:[]

我的测试是没有做任何幻想:

class UserEventControllerTests extends ControllerUnitTestCase { 
    protected void setUp() { 
     super.setUp() 
    } 

    protected void tearDown() { 
     super.tearDown() 
    } 

    void testAddingAUser() 
    { 
     def user = new User(emailAddress: "[email protected]") 
     user.save() 
    } 
} 

当我通过grails提供的脚手架页面执行操作时,保存实体正常工作。

我错过了什么?

回答

3

如果你希望它是一个集成测试不应该延长单元测试的一个基类,所以将其更改为

class UserEventControllerTests extends GroovyTestCase { 
... 
} 

,并确保它在测试/集成,没有测试/单元。

但它看起来像你想测试一个控制器(它叫做UserEventControllerTests),它应该延伸ControllerUnitTestCase。如果是这种情况,那么你应该做单元测试,但嘲笑域层(使用mockDomain等),因为你想专注于控制器逻辑,而不是持久性。使用数据库在适当的集成测试中测试域类。

这全部在文档的第10章中描述:http://grails.org/doc/latest/