2010-05-17 43 views
6

Tôi có một phương pháp điều khiển giống như ví dụ:Đơn vị thử nghiệm một phương pháp điều khiển?

def search = { 
    def query = params.query 

      ... 

    render results as JSON 
} 

Làm thế nào để kiểm tra đơn vị này? Cụ thể, làm cách nào để gọi tìm kiếm để đặt params.query và làm cách nào để kiểm tra kết quả của phương thức render? Có cách nào để thử phương pháp render, có lẽ?

Trả lời

5

Phân lớp grails.test.ControllerUnitTestCase để kiểm tra đơn vị của bạn. Grails sẽ tự động khởi tạo trình điều khiển của bạn và thử các phiên bản kết xuất và chuyển hướng cho phép bạn kiểm tra kết quả dễ dàng. Chỉ cần gán đầu vào thử nghiệm cho controller.params để thiết lập kiểm tra.

Ví dụ:

class SomethingController { 
    def search = { 
     def query = params.query 
     ...stuff... 
     render results as JSON 
    } 
} 

Xét nghiệm này trông giống như:

class SomethingControllerTests extends grails.test.ControllerUnitTestCase { 
    void testSearch() { 
     controller.params.query = "test query" 
     controller.search() 
     assertEquals "expected result", controller.response.contentAsString 
    } 
} 

Lưu ý: bạn có thể sử dụng ControllerUnitTestCase cho thử nghiệm hội nhập cũng vậy, nếu bạn cần một môi trường tích hợp đầy đủ hoàn chỉnh với cơ sở dữ liệu.

0

Có hai cách để đơn vị kiểm tra bộ điều khiển, nhưng nó sẽ yêu cầu một số thay đổi cho bạn. Đầu tiên là để đơn vị kiểm tra chính bộ điều khiển, mà không cần thêm sự phức tạp của phân tích cú pháp http, vì vậy bạn sẽ viết bài kiểm tra đơn vị của mình và vượt qua params.query như một phần của bài kiểm tra đơn vị của bạn, do đó, chia chức năng tìm kiếm của bạn thành hai chức năng:

def search = { 
    def query = params.query 
    render realSearch(query) as JSON 
} 

def realSearch ... 

Vì vậy, phần đầu tiên kiểm tra realSearch. Sau đó phần thứ hai là viết một ứng dụng sẽ thực sự kết nối với ứng dụng web của bạn và thực hiện kiểm tra chức năng, nó sẽ kiểm tra toàn bộ ứng dụng của bạn, bao gồm các phần của bộ điều khiển không được kiểm tra trong phần đầu tiên .

0

TFM: Grails ref chapter 9

Thực hiện theo các ví dụ testCreateWithJSON() ... chỉ cần nhét chuỗi truy vấn của bạn vào params [ 'truy vấn'], thiết lập contentType, tìm kiếm cuộc gọi(). Vì bạn đang gọi render một cách rõ ràng, điều esiest nhất là xem xét response.contentAsString ... Tôi có lẽ chỉ cần thực hiện các xác nhận khớp mẫu về contentAsString; bạn có thể phân tích cú pháp nó thành JSON và sau đó kiểm tra cây đối tượng đó, nhưng tôi nghi ngờ rằng sẽ không rõ ràng/nhanh như xác nhận khớp mẫu đơn giản.

Các vấn đề liên quan