【发布时间】:2010-09-08 13:58:41
【问题描述】:
我正在旧应用程序上运行一些旧的(但据我所知是有效的)测试,并注意到其中许多无法正常工作。错误消息通常是'No method signature for some dymamic method'
使用mockDomain 后,我设法解决了这个问题。
但是,我不知道如何测试在内部创建对象的控制器。
例如,我创建了一个示例控制器(省略了导入语句)
package com.tmp
class DummyController2 {
def index = { }
def createObject={
def emp= new Emp(name:'name',description:'description')
if (emp.validate()){
render 'OK'
}
else{
render 'FAIL'
}
}
}
然后是示例控制器测试
package com.tmp
class DummyController2Tests extends ControllerUnitTestCase{
DummyController2 controller
public void setUp(){
super.setUp()
controller = new DummyController2()
}
public DummyController2Tests(){
super(DummyController2Tests)
}
public void tearDown(){
super.tearDown()
}
void testCreateObject(){
assertEquals 'OK',controller.createObject()
}
}
现在当我运行这个测试时,我得到了
groovy.lang.MissingMethodException: 否 方法的签名: Emp.validate() 是 适用于参数类型:() 值:[]
有解决办法吗?在控制器中添加mockDomain 语句似乎非常侵入性和错误。也许只是我使用的是旧的 grails (1.2.1)?
提前致谢
【问题讨论】:
标签: unit-testing grails controller integration-testing