2011-03-22 17 views
5

Khi tôi làm xét nghiệm junit, tôi làm điều gì đó như thế này để điều khiển MVC thử nghiệm mùa xuân:Làm thế nào để kiểm tra đơn vị một ResponseBody hoặc ResponseEntity được gửi bởi một bộ điều khiển mvc mùa xuân?

request.setRequestURI("/projects/"+idProject+"/modify"); 
ModelAndView mv = handlerAdapter.handle(request, response, controller); 

nơi điều khiển được thử nghiệm là giống như:

@RequestMapping(value = "{id}/modify") 
public String content(ModelMap model, @PathVariable("id") Project object) { 

Nhưng tôi không tìm cách để có được những ResponseBody câu trả lời của những người xử lý yêu cầu được xác định như sau:

@RequestMapping("/management/search") 
public @ResponseBody ArrayList<SearchData> search(@RequestParam("q")) { 
     .... 
       .... 
     ArrayList<SearchData> datas = ....; 

     return datas; 
    } 
+0

tìm kiếm xung quanh Tôi đã tìm thấy giải pháp khác trong trường hợp của tôi đang hoạt động: http://stackoverflow.com/questions/9138555/spring-framework-test-restful-web-service-controller-offline-ie-no-server- n Có vẻ như rất dễ thực hiện và nó phù hợp với mã thử nghiệm của tôi. – emas

Trả lời

3

Kiểm tra đơn vị của bạn chỉ cần xác minh nội dung của giá trị trả lại của tôi thod:

ArrayList<SearchData> results = controller.search("value"); 
assertThat(results, ...) 

Chú thích @ResponseBody không liên quan. Đây là một trong những lợi ích to lớn của bộ điều khiển chú thích - kiểm thử đơn vị của bạn có thể tập trung vào logic nghiệp vụ, chứ không phải là cơ chế khung. Với bộ điều khiển chú thích trước, một nửa số mã thử nghiệm của bạn được chi tiêu để xây dựng các yêu cầu, phản hồi và các gubbins được liên kết như vậy. Đó là một sự phân tâm.

Kiểm tra xem chú thích của mã của bạn có tích hợp đúng với khung công tác hay không là công việc tích hợp và/hoặc kiểm tra chức năng.

+0

Ngoài ra, đối với kết quả ResponseEntity, bạn chỉ có thể gọi getBody để nhận kết quả. tức là ResponseEntity results = controller.search ("value"); MyObject obj = results.getBody(); assertThat (obj, ...) – digitaljoel

+0

Tôi hy vọng nó không phải là hình thức xấu để liên kết đến blog của riêng tôi. Trong tháng hai, tôi đã viết các mục liên quan trực tiếp đến các bộ điều khiển thử nghiệm. http://digitaljoel.nerd-herders.com/2011/02/05/mock-testing-spring-mvc-controller/ và http://digitaljoel.nerd-herders.com/2011/02/05/using-mockito -to-test-spring-mvc-ajax-tương tác/với thử nghiệm sau, một phương thức trả về một ResponseEntity. – digitaljoel

+0

Ok cảm ơn bạn đã trả lời skaffman, bạn nói đúng Tôi chỉ cần xác minh nội dung của giá trị trả lại. – Nico

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