2015-04-12 5 views
7

के साथ नियंत्रक अपवाद का इलाज कैसे करें मैं अपने नियंत्रक का परीक्षण करने के लिए 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 
+0

नियंत्रक इस तरह के अपवाद को फेंकने पर आप किस प्रकार की HTTP प्रतिक्रिया प्राप्त करने की अपेक्षा करते हैं? मुझे एक त्रुटि 500 ​​की उम्मीद होगी। अगर आप यही उम्मीद करते हैं, तो यही है कि आपके परीक्षण को सत्यापित करना चाहिए। यदि आप एक और त्रुटि की अपेक्षा करते हैं (एक त्रुटि 400 अधिक उपयुक्त होगी), तो परीक्षण करें कि आपको परीक्षण में ऐसी त्रुटि मिलती है, और परीक्षण पास होने तक कोड को ठीक करें। –

+0

मैंने पहले ही 500 त्रुटि की उम्मीद करने की कोशिश की है लेकिन यह काम नहीं करता है क्योंकि त्रुटि को फेंकने पर यह निष्पादन को रोक देता है। – tzortzik

+0

मैंने अपनी प्रारंभिक पोस्ट अपडेट की। कुछ अजीब हुआ। – tzortzik

उत्तर

6

तुम यहाँ की तरह एक कस्टम ExceptionHandler उपयोग करने का प्रयास किया? : https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

यदि आप ऐसा करते हैं तो आप कस्टम HTTP प्रतिक्रिया कोड वापस कर सकते हैं और उन्हें अपने परीक्षण में सत्यापित कर सकते हैं।

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