2011-08-23 4 views
5

Tôi đang sử dụng Grails 1.3.7. Tôi đang cố gắng kiểm tra chuyển hướng trong thử nghiệm tích hợp của mình. Dưới đây là bộ điều khiển và phương pháp trong câu hỏi của tôi ...Grails: thử nghiệm chuyển hướng với kiểm tra tích hợp

class HomeController { 

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

Tuy nhiên, trong thử nghiệm hội nhập của tôi, các cuộc gọi đến "controller.response.redirectedUrl" được thất bại (luôn luôn trả về null) mặc dù tôi biết các cuộc gọi chuyển hướng đang được được thực hiện (được xác minh thông qua ghi nhật ký). Có gì sai với bài kiểm tra tích hợp bên dưới?

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

Cảm ơn, - Dave

Trả lời

2

Thay đổi bạn HomeControllerTests để mở rộng GrailsUnitTestCase nên khắc phục vấn đề.

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

Các cách khác nhau để tạo lớp thử dường như thay đổi lớp được mở rộng.

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

Tuy nhiên, theo các Test section of the Grails User Guide, GrailsUnitTestCase là phần cốt lõi của khung thử nghiệm và, ít nhất là trong 1.3.7, đó là lớp tốt nhất đến các lớp học thử nghiệm trên cơ sở.