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

Dav*_*ave 5 grails integration-testing

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

class HomeController {

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

但是在我的集成测试中,对"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 != "" )
    }   
Run Code Online (Sandbox Code Playgroud)

谢谢, - 戴夫

Joh*_*ner 2

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

class HomeControllerTests extends grails.test.GrailsUnitTestCase {
    ....
}
Run Code Online (Sandbox Code Playgroud)

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

create-integration-test => GroovyTestCase
create-unit-test => GrailsUnitTestCase
create-controller => ControllerUnitTestCase
Run Code Online (Sandbox Code Playgroud)

然而,根据Grails 用户指南 的 Test 部分GrailsUnitTestCase是测试框架的核心部分,至少在 1.3.7 中,它是测试类的最佳基础类。