1
我在遺留應用程序上運行了一些舊的(但有效的,我被告知)測試,並注意到其中許多沒有工作。錯誤消息通常是'沒有方法簽名某些dymamic方法'Grails控制器測試 - 動態方法的問題
在使用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()是 適用於參數類型:() values:[]
是否有解決方法?在控制器內部添加mockDomain
語句看起來非常有效侵入和錯誤。也許它只是我使用舊的Grails(1.2.1)?
在此先感謝
顯示java.lang.NullPointerException:不能爲null對象上調用方法的containsKey() – Tom 2010-09-08 19:58:45
對不起,忘了這一點,你應該使用 「MockUtils.mockLogging的Emp」 – 2010-09-09 16:05:42