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
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. –
Zaten 500 hata beklemeyi denedim, ancak hata atıldığında yürütmeyi durdurduğu için çalışmaz. – tzortzik
İlk yayınımı güncelledim. Garip bir şey oldu. – tzortzik