2011-08-23 92 views
5

我正在使用Grails 1.3.7。我正在嘗試在我的集成測試中測試重定向。這是我的控制器和問題的方法...Grails:使用集成測試測試重定向

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 != "") 
    } 

謝謝 - 戴夫

回答

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 GuideGrailsUnitTestCase是測試幀的核心部分,並且至少在1.3.7,那就是要測試基類最好類上。