我正在对遗留应用程序运行一些旧的(但有效的,我被告知)测试,并注意到它们中的许多都不起作用。错误消息通常是“某些动态方法”
的无方法签名使用mockDomain
后,我设法解决了这个问题。
但是,我无法弄清楚如何测试在内部创建对象的控制器。
例如,我创建了一个样本控制器(省略了import语句)
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'
}
}
}
然后是示例controllerTest
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)?
提前致谢
答案 0 :(得分:1)
您的域类未被模拟。添加到setUp():
mockDomain Emp