Sử dụng Grails 2.1.0Kiểm tra xác nhận bộ điều khiển Grails đưa ra các xác nhận về mô hình khi hiển thị mẫu?
Dường như làm điều này từ một bộ điều khiển:
render(view: "someView", model: [modelEntry: "hello"])
cho phép tôi làm điều này trong một thử nghiệm đơn vị cho bộ điều khiển rằng:
controller.method()
assert model.modelEntry == "hello"
Tuy nhiên, nếu Tôi thay đổi bộ điều khiển để thực hiện việc này:
render(template: "someTemplate", model: [modelEntry: "hello"])
Bây giờ, mô hình Ví dụ trong thử nghiệm là một mảng trống. Tôi đã thực hiện khá nhiều tìm kiếm về điều này, và hầu hết các giải pháp dường như dành cho Grails 1, thường liên quan đến đối tượng modelAndView
(không tồn tại trong bài kiểm tra của tôi) hoặc renderArgs
(ditto).
Giải pháp duy nhất tôi đã tìm thấy là để tự ghi đè lên các quan điểm trong kiểm tra, như thế này:
views['_someTemplate.gsp'] = '${modelEntry}'
và sau đó làm khẳng định về chuỗi. Nhưng tôi không thích giải pháp này vì nó:
- đòi hỏi sự kiểm tra biết tên tập tin của mẫu
- gây khó khăn cho mục mô hình thử nghiệm mà không có toString tốt() phương pháp
- gây khó khăn cho thực hiện nhiều xác nhận về các mục nhập mô hình liên quan.
Có cách nào để trực tiếp nhận được các mục nhập trong mô hình từ trường hợp kiểm tra khi trình điều khiển hiển thị mẫu không?
'controller.modelAndView.model' không tồn tại? –
@ SérgioMichels chính xác, 'controller.modelAndView' là null. Hãy ghi nhớ, điều này là sử dụng phong cách Grails 2 thành ngữ, trong đó một bài kiểm tra được khai báo là một '@TestFor (WhateverController)' và bài kiểm tra không mở rộng bất cứ điều gì. Tôi không chắc liệu điều modelAndView có hoạt động cho grails 1 hay không và tại sao tôi luôn thấy gợi ý đó, nhưng nó không nằm trong kiểu thử nghiệm này cho Grails 2. – Rod