728x90
수정 전 코드
@Test
public void 유저객체생성확인() throws Exception {
//이름에 넘길 파라미터 네임
MockMultipartFile file = new MockMultipartFile("profileImg", "image.jpg", "image/jpeg", "<<jeg data>>".getBytes(StandardCharsets.UTF_8));
MemberRequestDto userMakeDto = new MemberRequestDto("password", "loginId", "nick", "bo@google.com", file);
//when
mockMvc.perform(multipart("/auth/signup")
.file(file)
.param("password", userMakeDto.getPassword())
.param("loginId", userMakeDto.getLoginId())
.param("nickname", userMakeDto.getNickname())
.param("email", userMakeDto.getEmail())
)
.andExpect(status().isOk())
.andExpect(jsonPath("loginId").value("loginId"))
.andExpect(jsonPath("nickname").value("nick"))
.andExpect(jsonPath("email").value("bo@google.com"));
//then
Member find = memberService.findByNickname("nick");
assertTrue(passwordEncoder.matches("password", find.getPassword()));
assertThat(find.getLoginId()).isEqualTo("loginId");
}
현재 코드에서는 유저의 프로필 이미지 입력을 위한 테스트코드를 위와 같이 작성해 둔 상태이다.
테스트 코드는 잘 동작하는데 파일 자체를 저장하는 방식이라 null인 이미지 파일만 계속 생성되고 있다.
수정 후 코드
#application-test.properties 파일 내에 테스트 코드용 별도의 파일 생성
file.dir=/Users/bagjuhui/IdeaProjects/share-anything/src/test/resources/static/uploads/
@Test
public void 유저객체생성확인() throws Exception {
//이름에 넘길 파라미터 네임
MockMultipartFile file = new MockMultipartFile("profileImg", "image.jpg", "image/jpeg", "<<jeg data>>".getBytes(StandardCharsets.UTF_8));
MemberRequestDto userMakeDto = new MemberRequestDto("password", "loginId", "nick", "bo@google.com", file);
//when
mockMvc.perform(multipart("/auth/signup")
.file(file)
.param("password", userMakeDto.getPassword())
.param("loginId", userMakeDto.getLoginId())
.param("nickname", userMakeDto.getNickname())
.param("email", userMakeDto.getEmail())
)
.andExpect(status().isOk())
.andExpect(jsonPath("loginId").value("loginId"))
.andExpect(jsonPath("nickname").value("nick"))
.andExpect(jsonPath("email").value("bo@google.com"));
//then
Member find = memberService.findByNickname("nick");
assertTrue(passwordEncoder.matches("password", find.getPassword()));
assertThat(find.getLoginId()).isEqualTo("loginId");
cleanUp();
}
//@AfterEach (해당 클래스 내의 모든 테스트 코드마무리 시에 동작하길 원한다면)
public void cleanUp() {
String filePath = "/Users/bagjuhui/IdeaProjects/share-anything/src/test/resources/static/uploads//";
deleteFolder(filePath);
}
public static void deleteFolder(String path) {
File folder = new File(path);
try {
if (folder.exists()) {
File[] folder_list = folder.listFiles(); //파일리스트
for (int i = 0; i < folder_list.length; i++) {
if (folder_list[i].isFile()) {
folder_list[i].delete();
}
}
}
} catch (Exception e) {
e.getStackTrace();
}
}
테스트 코드의 파일 저장위치를 분리하고 위와 같이 유저 객체 생성 메서드 실행 후에 파일을 삭제하도록 수정하였다.
728x90
'Spring,SpringBoot' 카테고리의 다른 글
query dsl 파일 중복생성, 파일을 찾지 못하는오류 (0) | 2023.05.06 |
---|---|
mock mvc 테스트시 본문의 값이랑 비교하는 방법, 테스트 코드에러, 연관관계 메서드 제거 (1) | 2023.05.02 |
DTO 변환과정 convert 패턴으로 처리 (0) | 2023.04.30 |
Spring 예외 처리 (0) | 2023.04.08 |
test 환경 분리하기, 폼 객체 mock mvc 테스트 방법 (0) | 2023.03.30 |
댓글