Spring/Spring-detail

@valid 를 사용해보자 (유효성 검사)

YoonJong 2022. 10. 13. 12:12
728x90

https://josteady.tistory.com/683

 

유효성 검사(Validation)

유효성 검사 / 데이터 검증 (Validation)  - 서비스의 비즈니스 로직이 옳바르게 동작하기 위해 사용되는 데이터에 대한 사점 검증하는 작업  - 데이터의 검증은 여러 계층에서 발생  - 데이터에 대

josteady.tistory.com

 

해당 포스팅에 이어 게시판관련 프로젝트를 만들면서 알게된점과 사용한 코드에 관해 정리하려고 한다.

 

아직 유효성검증 관련해서 궁금하고 미흡한 부분이 많아, 게시판(post) 관련해서 간단하게 작성했다.

@Getter
@Setter
@NoArgsConstructor
public class CreatePostDto {

    @NotBlank(message = "제목은 필수 값입니다.")
    private String title;

    @NotBlank(message = "내용은 필수 값입니다.")
    private String content;

제목과 내용 둘다 값이 비어있지 않아야 한다 라는것을 검증하고 싶었다.

 

해당 클래스에 검증부분을 기입했다면 Controller 부분에 @Valid를 추가해준다.

/* 게시글 작성 */
@PostMapping("/posts")
public void create(@RequestBody @Valid CreatePostDto createPostDto) {
    postService.create(createPostDto);
}

 

 

테스트 진행을 해본다

@Test
@DisplayName("@NotBlank 게시글제목 테스트")
void validCreatePostDtoTest() throws Exception {
    CreatePostDto createPostDto = CreatePostDto.builder()
            .title("")
            .content("내용")
            .build();

    mockMvc.perform(post("/posts")
            .contentType(APPLICATION_JSON)
            .content(objectMapper.writeValueAsString(createPostDto)))
            .andExpect(status().isBadRequest())
            .andDo(print());
}

제목이 없으므로, BadRequest가 나온다.

 

포트스맨 테스트

728x90