1 분 소요

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

매개변수가 없는 디폴트 생성자를 자동으로 생성해주는 어노테이션이다.

이 어노테이션을 사용하면 클래스 내에 명시적으로 작성하지 않아도 매개변수가 없는 디폴트 생성자를 사용할 수 있다.

카테고리: ,

업데이트:

댓글남기기