Я запускаю несколько старых (но действительно, я сказал) тестов в устаревшем приложении и замечаю, что многие из них работают неактивно. Сообщение об ошибке обычно равно «Нет сигнатуры метода для какой-либо динамический метод 'Тестирование контроллеров Grails - проблемы с динамическими методами
После использования 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: No подпись метода: Emp.validate() is применим для типов аргументов:() значения: []
Есть обходной путь на этом? Добавление mockDomain
утверждений внутри контроллера кажется очень intrusive и неправильный. Может быть, просто, что я использую старый грааль (1.2.1)?
Заранее благодарен
java.lang.NullPointerException: Невозможно вызвать метод ContainsKey() на объекте нулевой – Tom
извините, забыл о том, что один, вы должны использовать "MockUtils.mockLogging Emp" –