티스토리 뷰

SPRING 🍃

[SPRING] @Valid 유효성 검사

절취선 2021. 2. 13. 09:00
반응형

JPA 구성 -> test 를 통한 작동 검사 

 

TEST과정에서 파라미터 작동 확인하기 위해 @Valid 어노테이션을 통한 유효성 검사를 해야한다.

 

RestaurantControllerTest에서 @Builer를 통해 데이터를 입력 후 Mock을 통해 데이터으의 유무과 결과 반환을 한다.

 

 

1. createWithValidData : 파라미터 유효성 성공

   @Test
    public void createWithValidData() throws Exception{
        given(restaurantService.addRestaurant(any())).will(invocation -> {
                    Restaurant restaurant = invocation.getArgument(0);
                    return Restaurant.builder()
                            .name(restaurant.getName())
                            .address(restaurant.getAddress())
                            .id(1234L)
                            .build();
                });

        mvc.perform(post("/restaurants")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"name\":\"BeRyong\",\"address\":\"Busan\"}"))
                .andExpect(status().isCreated())
                .andExpect(header().string("location",  "/restaurants/1234"))
        .andExpect(content().string("{}"));

        verify(restaurantService).addRestaurant(any());
    }

 

@Builder을 통해 Restaurant 엔티티에 데이터 입력 후 mvc를 통해 데이터 검사를 한다. content를 구성하여 조회할 데이터를 검색하고 verify를 마지막으로 원하는 데이터가 실행되었는지 검증 할 수 있다.

 

header.spring 문은 Controller의 작동 url의 위치를 의미 ( "/restaurants/{id}" )

 

2. createWithInValidData : 파라미터 유효성 실패

조회할 데이터가 없는경우 상태를 status.isBadRequest() 로 하여 유효성 검증 실패를 예상도록 할 수 있다. 

    @Test
    public void createWithInValidData() throws Exception{
        mvc.perform(post("/restaurants")
                .contentType(MediaType.APPLICATION_JSON)
                .content("{\"name\":\"\",\"address\":\"\"}"))
                .andExpect(status().isBadRequest());

    }

결론)

@Valid 를 통해 데이터 유효성 검사를 만들 수 있다. 

반응형

'SPRING 🍃' 카테고리의 다른 글

SpringBootServletInitializer 상속  (0) 2022.02.26
[Junit.Test] initializationError  (0) 2021.03.24
[SPRING-BOOT] 프로젝트 분리  (0) 2021.03.11
[SPRING-BOOT] Mock and Mockito  (0) 2021.03.06
[SPRING-BOOT] REST API / RESTful  (0) 2021.03.06
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함