2015-04-12 25 views
7

Sto usando MockMVC per testare il mio controller.come trattare l'eccezione del controller con mockmvc

Ho il seguente comando:

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; 
    } 

} 

E il mio test in corso si presenta così:

@Test 
public void testGetAllLimit0() throws Exception { 
    mockMvc.perform(get("/A/get") 
      .param("limit","0") 
      ) 
      .andDo(print()) 
      .andExpect(...); 
} 

sto un'istanza di MockMVC con questo:

@Before 
public void setup() { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
} 

Come posso prendere cura di quell'eccezione gettata nel mio controller?

tardi Edit:

Non sono sicuro di quello che è successo nel mio codice di recente ma passa il test:

@Test 
public void testGetAllLimit0() throws Exception { 
    mockMvc.perform(get("/A/get") 
      .param("limit","0") 
      ) 
      .andDo(print()) 
      .andExpect(status().is(500)); 
} 

Si passa ancora se sostituisco is(500) con isOk(). E questo non va bene, dovrei controllare in qualche modo per quell'eccezione.

Se corro un gradle build ottengo questo:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException 
+0

Che tipo di risposta HTTP si prevede di ottenere quando un controller genera un'eccezione del genere? Mi aspetterei un errore 500. Se è quello che ti aspetti, è quello che il tuo test dovrebbe verificare. Se si prevede un altro errore (un errore 400 sarebbe più appropriato), quindi verificare che si ottenga un tale errore nel test e correggere il codice fino a quando il test non supera. –

+0

Ho già provato a prevedere l'errore 500 ma non funziona perché interrompe l'esecuzione quando viene generato l'errore. – tzortzik

+0

Ho aggiornato il mio post iniziale. È successo qualcosa di strano – tzortzik

risposta