작성
·
232
0
이번 강좌에서 존재하지 않는 닉네임으로 접근하면
IllegalArgumentException 이 발생하는데 어떻게 해야 테스트를 할수 있을까요?
mockMvc.perform(get("/profile/{nickname}", nickname))
.andExpect(result -> assertTrue(result.getResolvedException() instanceof IllegalArgumentException));
이렇게 하면 에러를 캐치하지 못하고
assertThrows(IllegalArgumentException.class, () ->mockMvc.perform(get("/profile/{nickname}", nickname)));
이방식으로는 스프링 래퍼 클레스인 <org.springframework.web.util.NestedServletException>이 발생했다고 나옵니다
org.assertj.core.api.Assertions.Assertions.assertThatThrownBy(() -> mockMvc.perform(get("/profile/{nickname}", nickname))).hasCause(new IllegalArgumentException());
이건 에러메세지 까지 비교하는데
어떤방법으로 테스트 하는게 좋을까요?
참고 :
답변 2
1
assertThatThrownBy(() -> mockMvc.perform(get("/profile/{nickname}", nickname)))
.hasCauseInstanceOf(IllegalArgumentException.class);
이렇게하니까 통과합니다.
0
IllegalArgumentException이 발생하는 상황을 테스트로 검증하고 싶다는 것이죠?
보여주신 코드에서는 org.assertj.core.api.Assertions.Assertions.assertThatThrownBy(() -> mockMvc.perform(get("/profile/{nickname}", nickname))).hasCause(new IllegalArgumentException());
이게 제일 직관적이고 좋아 보이긴하는데 실제로 작성하신 코드를 깃헙에 올려서 공유해 주시면 좀 더 살펴보겠습니다.
컨트롤러
https://github.com/seunghwan-won/zzzz/blob/step-17-profile-view/src/main/java/com/studyolle/account/AccountController.java
테스트
https://github.com/seunghwan-won/zzzz/blob/step-17-profile-view/src/test/java/com/studyolle/account/AccountControllerTest.java
입니다.
이전에 junit4로 테스트 할 때는
@Test(에러.class)로 했던걸로 기억나는데
기선님은 어떤방식으로 처리했을지 궁금해서 남겼습니다~