Grails: тестирование перенаправления с интеграционным тестом - PullRequest
5 голосов
/ 23 августа 2011

Я использую Grails 1.3.7. Я пытаюсь проверить перенаправление в моем интеграционном тесте. Вот мой контроллер и рассматриваемый метод ...

class HomeController {

def design = {
    ....
            if (params.page) {
                redirect(uri: "/#/design/${params.page}")
            }
            else {
                redirect(uri: "/#/design")
            }
            break;
    }
}

Однако в моем интеграционном тесте вызов «controller.response.redirectedUrl» завершается неудачно (всегда возвращает ноль), хотя я знаю, что выполняется вызов перенаправления (проверено с помощью ведения журнала). Что не так с тестом интеграции ниже?

class HomeControllerTests extends grails.test.ControllerUnitTestCase {
    ....

    void testHomePageDesign() { 
       def controller = new HomeController()

       // Call action without any parameters
       controller.design()

       assert controller.response.redirectedUrl != null

       assertTrue( responseStr != "" )
    }   

Спасибо, - Дейв

1 Ответ

2 голосов
/ 23 августа 2011

Изменение HomeControllerTests для расширения GrailsUnitTestCase должно решить проблему.

class HomeControllerTests extends grails.test.GrailsUnitTestCase {
    ....
}

Кажется, что различные способы генерации тестового класса варьируют класс, который расширен.

create-integration-test => GroovyTestCase
create-unit-test => GrailsUnitTestCase
create-controller => ControllerUnitTestCase

Однако, в соответствии с разделом Test Руководства пользователя Grails , GrailsUnitTestCase является основной частью фрейма тестирования и, по крайней мере, в 1.3.7, что является лучшим класс для базовых тестовых классов.

...