के साथ नियंत्रक अपवाद का इलाज कैसे करें मैं अपने नियंत्रक का परीक्षण करने के लिए MockMVC का उपयोग कर रहा हूं।mockmvc
मैं निम्नलिखित नियंत्रक है:
public class A{
...
@RequestMapping("/get")
public List<ADTO> get(@RequestParam(defaultValue = "15", required = false) Integer limit) throws IOException {
if(limit <= 0 || limit >= 50){
throw new IllegalArgumentException();
}
...
return aDTOs;
}
}
और मेरे वर्तमान परीक्षण इस तरह दिखता है:
@Test
public void testGetAllLimit0() throws Exception {
mockMvc.perform(get("/A/get")
.param("limit","0")
)
.andDo(print())
.andExpect(...);
}
मैं इस के साथ MockMVC instantiating हूँ:
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
मैं कैसे ले जा सकते हैं मेरे नियंत्रक में फेंक दिया अपवाद की देखभाल?
बाद में संपादित करें:
मुझे यकीन है कि क्या हाल ही में मेरी कोड में हुआ नहीं हूँ, लेकिन यह परीक्षण में सफ़ल:
@Test
public void testGetAllLimit0() throws Exception {
mockMvc.perform(get("/A/get")
.param("limit","0")
)
.andDo(print())
.andExpect(status().is(500));
}
यह अभी भी गुजरता है अगर मैं isOk()
साथ is(500)
बदलें। और यह अच्छा नहीं है, मुझे उस अपवाद के लिए किसी भी तरह की जांच करनी चाहिए।
अगर मैं एक gradle build
चलाने मैं इस मिल:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException
नियंत्रक इस तरह के अपवाद को फेंकने पर आप किस प्रकार की HTTP प्रतिक्रिया प्राप्त करने की अपेक्षा करते हैं? मुझे एक त्रुटि 500 की उम्मीद होगी। अगर आप यही उम्मीद करते हैं, तो यही है कि आपके परीक्षण को सत्यापित करना चाहिए। यदि आप एक और त्रुटि की अपेक्षा करते हैं (एक त्रुटि 400 अधिक उपयुक्त होगी), तो परीक्षण करें कि आपको परीक्षण में ऐसी त्रुटि मिलती है, और परीक्षण पास होने तक कोड को ठीक करें। –
मैंने पहले ही 500 त्रुटि की उम्मीद करने की कोशिश की है लेकिन यह काम नहीं करता है क्योंकि त्रुटि को फेंकने पर यह निष्पादन को रोक देता है। – tzortzik
मैंने अपनी प्रारंभिक पोस्ट अपडेट की। कुछ अजीब हुआ। – tzortzik