프로젝트를 완성 후 진행하지 않았던 테스트 코드를 작성해 보았다.
우선 Dto 클래스들의 테스트 코드를 작성했는데 여기서 생각해야 할 점이 데이터가 Json형식으로 @RequestBody를 통해 들어온다는 점과 유효성 검사가 잘 이루어지고 있는지를 체크해야 했다.
@Test
@DisplayName("비밀번호 변경을 위한 Dto")
void test2() throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
//given
String requestBody = "{\"originPassword\" : \"12345678\"," +
"\"newPassword\" : \"123456789\"," +
" \"newPasswordCheck\" : \"123456789\"}";
//when
MemberDto.UpdatePasswordRequestDto updatePasswordRequestDto = objectMapper.readValue(
requestBody,
MemberDto.UpdatePasswordRequestDto.class
);
assertEquals("12345678",updatePasswordRequestDto.getOriginPassword());
assertEquals("123456789",updatePasswordRequestDto.getNewPassword());
assertEquals(updatePasswordRequestDto.getNewPassword(),updatePasswordRequestDto.getNewPasswordCheck());
코드는 비밀번호 변경 때 받아오는 데이터들을 담는 Dto를 테스트하기 위한 코드이다.
Json형식의 데이터를 ObjectMapper를 통해 Java 객체로 변환해 주었다. 그리고 assertEquals를 이용해 의도한 결과가 나왔는지 확인했다.
여기서 한 가지 더 확인해야 할 것이 있는데, 비밀번호는 8~15자로 이루어져 있어야 한다. 이를 확인하기 위해
private static ValidatorFactory factory;
private static Validator validator;
@BeforeAll
public static void init(){
factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
테스트 클래스에 필요한 설정을 해준 다음에
Set<ConstraintViolation<MemberDto.UpdatePasswordRequestDto>> violations = validator.validate(updatePasswordRequestDto);
assertTrue(violations.isEmpty());
우선 데이터가 정상적으로 들어왔다면 violations에 아무 값도 들어가지 않을 것이고, assertTrue를 통해 확인할 수 있다.
'개발일지' 카테고리의 다른 글
20231205 - 프로그래머스/42748 (1) | 2023.12.05 |
---|---|
20231204 - 프로그래머스/12915 (2) | 2023.12.04 |
20231201 - 프로그래머스/12926 (1) | 2023.12.01 |
20231129 - UserDetails, UserDetailsService (0) | 2023.11.29 |
20231128 - 세 번째 팀 프로젝트를 마치며 (0) | 2023.11.28 |