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をインスタンス化しています:
@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));
}
is(500)
に置き換えても合格ですisOk()
。そして、これは良くありません。何らかの形でその例外をチェックする必要があります。
を実行すると、次のgradle build
ようになります。
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException