21.12.23 TIL43

서태욱·2021년 12월 22일
0

🔎 오늘 배운 것

UserApiController 테스트 코드 작성하는데 하루를 다 썼다.
그 중에서 가장 애먹었던 부분은 기존 프로필을 수정하는 부분이었다.

프로필 수정 탭을 누르면 닉네임이랑 프로필 사진을 변경할 수 있도록 하는 부분에 대한 테스트였는데,
아무리 수정을 하고 테스트를 진행해 봐도 request까지는 변경할 닉네임인
"changedNickname"이 잘 담기는데 최종적으로 body에는 계속 이전 닉네임인 testNickname만 나왔다. 근데 또 사진은 변경이 잘 되었다.

그러던 중 검색한 블로그에서 MockMvc를 통해 요청할 때 id 값을 part()로 요청해야 한다는 글을 봤다.
나는 계속 param으로 보냈었기 때문에 @RequestPart로 인식이 되지 않았던 것이다.
애초에 해당 부분이 multipart라는 부분을 간과하고 계속 다른 방법만 찾아보았던 게 패착이었던 것 같다.

아래와 같이 수정한 뒤 테스트를 성공시켰다.

  @Test
    @DisplayName("프로필 설정")
    @WithUserDetails(value = "testId")
    @Order(4)
    public void updateProfile() throws Exception {
                MockMultipartFile image = new MockMultipartFile("profileImgUrl", "image.jpeg", "image/jpeg", "<<jpeg data>>".getBytes());
        mockMvc.perform(multipart("/user")
                        .file(image).part(new MockPart("nickname", "changedNickname".getBytes(StandardCharsets.UTF_8))))

                .andExpect(status().isOk())
                .andDo(print());
    }

❗️ 느낀 점

  • 온갖 시도들을 한 뒤 성공했을 때 정말 뿌듯하다.
  • 그런데 그 과정은 고되고 힘이 많이 들었다.
  • 가장 기본인 부분을 놓치면 어떻게 돌고 돌아 해결로 가게 되는지 뼈저리게 느낀 것 같다.
  • 그리고 검색을 할 때에도 좀 더 유의깊게 보아야겠다. 해결의 실마리를 찾은 블로그를
    검색 초반에 찾았던 것 같은데 넘긴것 같다.

✔️ 참고

https://gaemi606.tistory.com/entry/JUnit5-multipartformdata-%EC%A0%84%EC%86%A1-%ED%85%8C%EC%8A%A4%ED%8A%B8-MockMultipartFile

profile
re:START

1개의 댓글

comment-user-thumbnail
2021년 12월 23일

태스트 욱님,,

답글 달기