2010-09-06 102 views
1

我正在尝试编写一个简单的集成测试,但在域对象方面遇到了一些麻烦。我已阅读unit testing,但无法弄清楚。Grails集成测试:遇到问题

这是我简单的测试:

User user = User.get(1) 

    controller.params.userid = "1" 
    controller.session.user = user 

    controller.save(); 

的错误信息是:

groovy.lang.MissingMethodException:法无 签名:静态 com.baufest.insside.user。 User.get()是 适用于参数类型: (java.lang.Integer)值:1

我的猜测是我应该嘲笑user对象,但不知道如何。

回答

2

你说你是集成测试,但看起来你是单元测试。测试/整合或测试/单元?单元测试需要模拟,但是集成测试具有初始化的Spring应用程序上下文和Hibernate,并针对内存数据库运行。

这在用户指南中介绍,该用户指南在http://grails.org/doc/latest/(您引用较旧的1.1版本)。

嘲笑User类,只需要调用mockDomain与无论是在设置或在测试方法中的一个或多个测试实例:

def users = [new User(...), new User(...), ...] 
mockDomain User, users 

... 

User user = User.get(1) 
+0

及其下IntegrationTests。我想要做的是测试一个控制器,它从save()方法中的会话中检索用户对象。 – Tom 2010-09-06 17:18:28

+0

你可以在测试中插入更多代码吗? – 2010-09-06 20:34:48

+1

除非你做一些有趣的事情,否则你不应该得到一个缺失的方法异常。你在扩展GroovyTestCase吗?集成测试应该,但单元测试会扩展像ControllerUnitTestCase这样的Grails单元测试类之一。 – 2010-09-06 21:45:27