2011-03-22 20 views
5

जब मैं JUnit परीक्षण करते हैं, मैं परीक्षण वसंत MVC नियंत्रकों को कुछ इस तरह करते हैं:एक वसंत एमवीसी नियंत्रक द्वारा भेजे गए प्रतिक्रिया प्रतिक्रिया या प्रतिक्रिया प्रतिक्रिया का परीक्षण कैसे करें?

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

जहां परीक्षण किया नियंत्रक की तरह है:

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

लेकिन मैं कैसे प्राप्त करने के लिए भी नहीं मिलता है ResponseBody इस तरह परिभाषित अनुरोध हैंडलर का उत्तर:

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

     return datas; 
    } 
+0

चारों ओर देखकर मुझे एक और समाधान मिला कि मेरे मामले में काम कर रहा है: http://stackoverflow.com/questions/9138555/spring-framework-test-restful-web-service-controller-offline-ie-no-server- n यह लागू करने में बहुत आसान लगता है और यह मेरे टेस्ट कोड के साथ अच्छी तरह से फिट बैठता है। – emas

उत्तर

3

आपके यूनिट परीक्षण को केवल मेरे रिटर्न मूल्य की सामग्री को सत्यापित करने की आवश्यकता है Thod:

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

@ResponseBody एनोटेशन अप्रासंगिक है। यह एनोटेटेड नियंत्रकों के बड़े लाभों में से एक है - आपके यूनिट परीक्षण व्यापार तर्क पर ध्यान केंद्रित कर सकते हैं, ढांचे यांत्रिकी नहीं। प्री-एनोटेशन कंट्रोलर के साथ, आपके टेस्ट कोड का आधा हिस्सा नकली अनुरोध, प्रतिक्रियाएं और संबंधित गब्बिन्स बनाने के लिए खर्च किया जाता है। यह एक व्याकुलता है।

परीक्षण करना कि आपके कोड की एनोटेशन फ्रेमवर्क के साथ सही ढंग से एकीकृत होकर एकीकरण और/या कार्यात्मक परीक्षण का काम है।

+0

इसके अलावा, एक प्रतिक्रिया प्रतिक्रिया परिणाम के लिए आप परिणाम प्राप्त करने के लिए केवल GetBody को कॉल कर सकते हैं। यानी ResponseEntity परिणाम = नियंत्रक। खोज ("मान"); MyObject obj = results.getBody(); assertThat (obj, ...) – digitaljoel

+0

मुझे आशा है कि यह मेरे ब्लॉग से लिंक करने के लिए बुरा फॉर्म नहीं है। फरवरी में मैंने सीधे परीक्षण नियंत्रकों से संबंधित प्रविष्टियां लिखीं। http://digitaljoel.nerd-herders.com/2011/02/05/mock-testing-spring-mvc-controller/ और http://digitaljoel.nerd-herders.com/2011/02/05/using-mockito -to-test-spring-mvc-ajax-interaction/उत्तरार्द्ध परीक्षण के साथ एक विधि जो प्रतिक्रिया प्रतिक्रिया देता है। – digitaljoel

+0

ठीक है आपके उत्तर स्काफमैन के लिए धन्यवाद, आप सही हैं मुझे केवल वापसी मूल्य की सामग्री को सत्यापित करने की आवश्यकता है। – Nico

संबंधित मुद्दे