Я запускаю несколько старых (но, как мне сказали, действительных) тестов на устаревшем приложении и замечаю, что многие из них не работают.Сообщение об ошибке обычно звучит так: «Нет подписи метода для какой-то димамный метод »
После использования 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'
}
}
}
А затем образец 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)?
Заранее спасибо