회원 가입 컨트롤러를 테스트 도중..
@Test
@DisplayName("회원 가입 성공")
void signupSuccess() throws Exception {
  // given
  SignupDto.Request signupDto = SignupDto.Request.builder()
      .username("username")
      .password("password")
      .name("testName")
      .address("testAddress")
      .mobile("010-1234-5678")
      .mail("test@mail.com")
      .role("USER")
      .build();

  // when
  mockMvc.perform(post("/signup")
          .contentType(MediaType.APPLICATION_JSON)
          .content("{"
              + "\"username\":\"" + signupDto.getUsername() + "\","
              + "\"password\":\"" + signupDto.getPassword() + "\","
              + "\"name\":\"" + signupDto.getName() + "\","
              + "\"address\":\"" + signupDto.getAddress() + "\","
              + "\"mobile\":\"" + signupDto.getMobile() + "\","
              + "\"mail\":\"" + signupDto.getMail() + "\","
              + "\"role\":\"" + signupDto.getRole() + "\""
              + "}"))
      .andExpect(status().isOk());
}

 

  • content에 값을 넣어주는 게 조금 지저분해 보였다.
    • Jackson 라이브러리의 ObjectMapper를 이용해보게 됐다.
      • ObjectMapper는 JSON과 Java 객체 간의 변환을 담당해준다.
      • 이후 ObjectMapper의 writeValueAsString 메서드를 이용해 Java 객체를 JSON 문자열로 직렬화(serialize) 한다. (역질렬화(deserialize는 readValue())
  @Test
  @DisplayName("회원 가입 성공")
  void signupSuccess() throws Exception {
    // given
    SignupDto.Request signupDto = SignupDto.Request.builder()
        .username("username")
        .password("password")
        .name("testName")
        .address("testAddress")
        .mobile("010-1234-5678")
        .mail("test@mail.com")
        .role("USER")
        .build();

    ObjectMapper objectMapper = new ObjectMapper();
    String jsonContent = objectMapper.writeValueAsString(signupDto);

    // when
    mockMvc.perform(post("/signup")
            .contentType(MediaType.APPLICATION_JSON)
            .content(jsonContent))
        .andExpect(status().isOk());
  }
}

+ Recent posts