스프링부트와 AWS로 혼자 구현하는 웹 서비스 - 단위 테스트
단위 테스트
사용 기능들
01. @WebMvcTest
- Web에 집중할 수 있는 어노테이션
- @Controller, @ControllerAdvice 등을 사용 가능
02. MockMvc
- 웹 API를 테스트할 때 사용
- Spring MVC 테스트의 시작점
- HTTP GET, POST 등에 대한 API 테스트 가능
03. MockMvc.peform 메소드
-
MockMvc를 통해 HTTP 메소드 활용 가능
-
체이닝이 지원(andExpect 활용)되어 여러 검증을 이어서 수행할 수 있음
-
예제)
-
@Test void helloDTO() throws Exception { String name = "hello"; int amount = 1000; mvc.perform( get("/hello/dto") .param("name", name) .param("amount", String.valueOf(amount))) .andExpect(status().isOk()) .andExpect(jsonPath("$.name", is(name))) .andExpect(jsonPath("$.amount", is(amount))); }
-
.param
- API 테스트할 때 사용될 요청 파라미터 설정
- String값만 허용하므로 등록할 때 String.valueOf(value)로 변경해야 함
-
jsonPath
- JSON 응답값을 필드별로 검증할 수 있는 메소드
- $를 기준으로 필드명 명시 ($.필드명)
- 뒤의 검증 메소드는 org.hamcrest.Matchers에서 불러옴
JPA와 함께 테스트 하는 경우
@SpringBootTest + TestRestTemplate
-
이 조합으로 @WebMvcTest의 기능을 대신하면서 JPA도 테스트할 수 있음
-
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
- 위 코드를 테스트 클래스에 붙임 => 랜덤으로 포트 생성
댓글남기기