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());
}
태스트 욱님,,