2010-09-08 3 views
1

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

Заранее благодарен

ответ

1

Ваш класс домена не издевается. Добавить к Установке():

mockDomain Emp 
+0

java.lang.NullPointerException: Невозможно вызвать метод ContainsKey() на объекте нулевой – Tom

+1

извините, забыл о том, что один, вы должны использовать "MockUtils.mockLogging Emp" –

Смежные вопросы