Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- String.valueOf()
- 재귀함수
- Spring MVC 구성요소
- 코드스테이츠
- Spring Web MVC
- 스택
- MySQL
- 재귀와반복문
- Spring MVC 동작원리
- 백준 11659
- 프로그래머스
- Array.asList
- 자바
- 코드스테이츠 백엔드
- List.of
- GCP
- 백준
- OOP
- 알고리즘
- vm인스턴스생성
- 버블정렬
- java
- 싱글톤패턴
- 구간합구하기
- 성능테스트툴
- 투포인터알고리즘
- 11659
- 클라우드에서 도커 실행하기
- 인텔리제이
- 코딩테스트
Archives
- Today
- Total
순간을 기록으로
[스프링] 테스트 코드로 API 요청과 응답 자동 검증하기 본문
상황
이전 프리 프로젝트에서 API를 검증할 때 포스트맨을 이용하여 수동으로 하나하나 검증을 했다.
수동으로 검증하려니 시간을 많이 잡아먹고 정확성도 떨어지는 문제점이 있었다.
그래서 이번에는 테스트 코드를 작성하여 API를 자동으로 검증해보자.
아래의 예시는 테스트 코드를 작성하여 어떻게 API 테스트를 자동 검증하는지를 보여준다.
이번 예시에서는 http://localhost:8080/hello/dto?name=hello&amount=1000으로 GET 요청을 보냈을 때 다음과 같이 JSON으로 응답이 와야 한다.
HelloResponseDto
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
HelloController
@RestController
public class HelloController {
@GetMapping("/hello/dto")
public HelloResponseDto helloResponseDto(@RequestParam String name,
@RequestParam int amount) {
return new HelloResponseDto(name, amount);
}
}
HelloControllerTest
@WebMvcTest
class HelloControllerTest {
@Autowired
private MockMvc mvc;
@DisplayName("helloDto가 리턴된다")
@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)));
}
}
- mvc.perfrom(get("/hello/dto")
- MockMvc를 이용하여 /hello/dto로 GET 요청을 한다
- param("name", name)과 param("amount", String.valueOf(amount))
- 쿼리 파라미터(쿼리 스트링, 요청 파라미터)를 Key&value 형태로 설정한다. 데이터를 주고받을 때는 문자열로 주고받으므로 amount는 문자열로 형변환을 한다.
- andExpect(status().isOk())
- 요청에 대한 응답을 검증합니다.
- HTTP 헤더가 200(OK)인지 검증한다.
- andExpect(jsonPath("$.name", is(name))
- jsonPath는 응답 값을 필드별로 검증할 수 있는 메서드다.
- $를 기준으로 필드명을 명시한다
테스트 코드를 이용한 API 자동 검증 완료
'Development > Spring' 카테고리의 다른 글
JPA Audit 기능을 이용 BaseEntity를 만들어서 Entity의 생성일과 수정일을 관리하기 (0) | 2022.09.21 |
---|---|
@SpringBootTest vs. @WebMvcTest (0) | 2022.09.08 |
[스프링] properties와 yml 파일 변환하기 (0) | 2022.08.30 |
[스프링] Spring MVC 동작 방식과 구성요소 (0) | 2022.06.24 |
Jar 파일은 무엇일까? (0) | 2022.02.05 |
Comments