我正在使用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 != "" )
}
谢谢, - 戴夫
答案 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中,这是基于测试类的最佳类。