Grails - save()在集成测试中因MissingMethodException而失败

时间:2011-02-24 04:51:27

标签: grails groovy gorm

我正在学习groovy / grails,并编写我的第一个集成测试。

目前失败的是:

  

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: "martypitt@test.com")
        user.save()
    }
}

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

我错过了什么?

1 个答案:

答案 0 :(得分:3)

如果您希望它是集成测试,则不应扩展其中一个单元测试基类,因此将其更改为

class UserEventControllerTests extends GroovyTestCase {
...
}

并确保它处于测试/集成状态,而不是测试/单元。

但看起来你想要测试一个控制器(它叫做UserEventControllerTests),它应该扩展ControllerUnitTestCase。如果是这种情况那么你应该进行单元测试,但是模拟域层(使用mockDomain和其他),因为你想要专注于控制器逻辑,而不是持久性。使用数据库在适当的集成测试中测试域类。

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