我正在学习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提供的脚手架页面保存实体时工作正常。
我错过了什么?
答案 0 :(得分:3)
如果您希望它是集成测试,则不应扩展其中一个单元测试基类,因此将其更改为
class UserEventControllerTests extends GroovyTestCase {
...
}
并确保它处于测试/集成状态,而不是测试/单元。
但看起来你想要测试一个控制器(它叫做UserEventControllerTests),它应该扩展ControllerUnitTestCase
。如果是这种情况那么你应该进行单元测试,但是模拟域层(使用mockDomain
和其他),因为你想要专注于控制器逻辑,而不是持久性。使用数据库在适当的集成测试中测试域类。
这些都在文档的第10章中描述:http://grails.org/doc/latest/