2012-05-29 29 views
0

我有以下代碼:單元測試控制器:的redirectUrl爲空或params爲不可用

void testConfirmBookNotFound() { 

    def book = new Book(id: 1, title: 'test book') 
    mockDomain(Book, [book]) 
    mockDomain(BookProject, [new BookProject(id: 1, book: book)]) 

    def controller = new CancelController() 
    controller.params.id = 5140 
    controller.confirm() 

    assertEquals "/admin/cancel/index", controller.response.redirectedUrl 
} 

如果我的測試類擴展ControllerUnitTestCase然後controller.response.redirectedUrl總是null。但是,如果我的測試類延伸GrailsUnitTestCase(我已閱讀的是解決空網址問題),然後我得到No such property: params。我需要做些什麼才能使這個測試工作?

回答

2

嘗試在使用controller.redirectArgs.action ...

assertThat(controller.redirectArgs.action, equalTo("index")) 
+0

這工作後,我改變了我的控制器使用重定向動作:「指數」(注意引號,所以它不返回關閉) – Gregg

+0

只是一個注意任何使用grails> 2的人,redirectArgs不存在。請參閱http://grails.1312388.n4.nabble.com/Problem-in-testing-my-controller-in-spock-td4495752.html – EdgeCaseBerg