[Spring MVC] 슬라이스 테스트 실습
MemberController 클래스에 대한 슬라이스 테스트 케이스 작성
- patchMemberTest()
- getMembersTest()
- deleteMemberTest()
patchMemberTest()
@Test
void patchMemberTest() throws Exception {
MemberDto.Post post = new MemberDto.Post("hgd@gmail.com","홍길동","010-1111-1111");
String postContent = gson.toJson(post);
mockMvc.perform(
post("/v11/members")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(postContent)
);
MemberDto.Patch patch = new MemberDto.Patch(1, "Demuu", "010-1234-1234", null);
String patchContent = gson.toJson(patch);
mockMvc.perform(
patch("/v11/members/1")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.content(patchContent)
)
.andExpect(status().isOk())
.andExpect(jsonPath("$.data.name").value(patch.getName()))
.andExpect(jsonPath("$.data.phone").value(patch.getPhone()));
}
getMembersTest()
@Test
void getMembersTest() throws Exception {
MemberDto.Post post1 = new MemberDto.Post("hgd@gmail.com","홍길동","010-1111-1111");
String content1 = gson.toJson(post1);
ResultActions postActions1 =
mockMvc.perform(
post("/v11/members")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(content1)
);
MemberDto.Post post2 = new MemberDto.Post("hgd2@gmail.com","홍길동2","010-2222-2222");
String content2 = gson.toJson(post2);
ResultActions postActions2 =
mockMvc.perform(
post("/v11/members")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(content2)
);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("page", "1");
map.add("size", "2");
mockMvc.perform(
get("/v11/members")
.params(map)
.accept(MediaType.APPLICATION_JSON)
)
.andExpect(status().isOk())
.andExpect(jsonPath("$.data").isArray())
.andExpect(jsonPath("$.length()").value(2))
.andReturn();
}
- andExpect(jsonPath(“$.data”).isArray())
- 응답 결과의 data 속성이 배열임을 검증
- andExpect(jsonPath(“$.length()”).value(2))
- data 배열의 길이가 2임을 검증
- andReturn()
- 현재 수행 중인 요청에 대한 결과를 반환하며, 더 자세한 검증을 수행할 수 있도록 한다.
- ResultActions 객체를 반환하는데 이를 이용해 결과에 대한 JSONPath 검증을 수행 할 수 있다.
deleteMemberTest()
@Test
void deleteMemberTest() throws Exception {
MemberDto.Post post = new MemberDto.Post("hgd@gmail.com","홍길동","010-1111-1111");
String content = gson.toJson(post);
mockMvc.perform(
post("/v11/members")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(content)
);
// 회원 삭제
mockMvc.perform(delete("/v11/members/1")).andExpect(status().isNoContent());
}
추가 학습
@AllArgsConstructor
클래스의 모든 필드를 매개변수로 받는 생성자를 자동으로 생성해 주는 어노테이션이다.
이 어노테이션을 사용하면 클래스 내의 모든 필드에 대한 생성자를 명시적으로 작성하지 않아도 된다.
@NoArgsConstructor
매개변수가 없는 디폴트 생성자를 자동으로 생성해주는 어노테이션이다.
이 어노테이션을 사용하면 클래스 내에 명시적으로 작성하지 않아도 매개변수가 없는 디폴트 생성자를 사용할 수 있다.
댓글남기기