2015-04-12 19 views
7

Denetleyicimi test etmek için MockMVC kullanıyorum.denetleyici istisnasını mockmvc ile nasıl ele alır

Aşağıdaki denetleyicisi vardır:

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

} 

Ve benim şimdiki testi şöyle görünür:

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

nasıl alabilir: Bununla MockMVC başlatmasını am

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

kontrol cihazımda atılan istisnanın bakımı?

Sonra Düzenleme:

Geçenlerde benim kodunda ne olduğundan emin değilim ama testini geçer: Ben isOk() ile is(500) değiştirirseniz

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

Hala geçer. Ve bu iyi değil, bu istisna için bir şekilde kontrol etmeliyim. Bir gradle build çalıştırırsanız

Ben bu olsun:

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

Denetleyici böyle bir istisna atarken ne tür bir HTTP yanıtı almayı bekliyorsunuz? 500 numaralı bir hata beklerdim. Beklediğin buysa, testin doğrulaması gerekir. Başka bir hata bekliyorsanız (400 hatası daha uygun olacaktır), testte böyle bir hata olduğunu test edin ve test geçene kadar kodu düzeltin. –

+0

Zaten 500 hata beklemeyi denedim, ancak hata atıldığında yürütmeyi durdurduğu için çalışmaz. – tzortzik

+0

İlk yayınımı güncelledim. Garip bir şey oldu. – tzortzik

cevap

İlgili konular