기존에는 코드 리팩토링 후 서버를 띄우고 HTTP 요청을 직접 보내서 응답을 확인하는 방식으로 기능을 검증함
그러나 이 방법은 잘못된 동작이 발생하더라도 쉽게 놓칠 수 있다는 한계가 있음
이를 해결하기 위해 테스트 코드를 작성하여 웹 응답 검증 테스트를 진행할 수 있음
검증하고자 하는 것은 API 응답이 예상한대로 오는 지 확인하는 것임
참고! helloApi() 테스트를 실행시키기 위해서는 HellobootApplication 서버를 실행시켜줘야 됨
public class HelloApiTest {
@Test
public void helloApi() throws Exception {
// http localhost:8080/hello?name=Spring
TestRestTemplate rest = new TestRestTemplate(); // RestTemplate : api 요청을 호출해서 응답을 가져와서 사용할 수 있음
ResponseEntity<String> res
= rest.getForEntity("<http://localhost:8080/hello?name={name}>", String.class, "Spring");
// 응답 검증
// status code 200
assertThat(res.getStatusCode()).isEqualTo(HttpStatus.OK);
// header(content-type) text/plain
assertThat(res.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE)).startsWith(MediaType.TEXT_PLAIN_VALUE);
// body Hello Spring
assertThat(res.getBody()).isEqualTo("Hello Spring");
}
}
JUnit5를 이용하여 개발자 테스트를 진행한다면 HTTP 툴을 이용하지 않고 더 정확하게 API 응답을 검증할 수 있음