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
_
ここのようなカスタムExceptionHandlerを使用しようとしましたか? : https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
その場合、カスタムHTTP応答コードを返し、テストでそれらを確認できます。