Grails:使用集成测试测试重定向

时间:2011-08-23 17:45:35

标签: grails integration-testing

我正在使用Grails 1.3.7。我正在尝试在集成测试中测试重定向。这是我的控制器和方法......

class HomeController {

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

然而,在我的集成测试中,对“controller.response.redirectedUrl”的调用失败(总是返回null),即使我知道正在进行重定向调用(通过日志记录验证)。下面的集成测试有什么问题?

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 个答案:

答案 0 :(得分:2)

更改 HomeControllerTests 以扩展 GrailsUnitTestCase 可以解决问题。

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

生成测试类的各种方法似乎都会改变扩展的类。

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

但是,根据Test section of the Grails User Guide GrailsUnitTestCase 是测试框架的核心部分,至少在1.3.7中,这是基于测试类的最佳类。