👻 메인 클래스를 살펴봅시다.
@SpringBootApplication -> 1
public class BoardSpringbootWebserviceApplication{
public static void main(String[]args) {
SpringApplication.run(BoardSpringbootWebserviceApplication.class, args);
}
}
- @SpringBootApplication 으로 인해 스프링 부트의 자동 설정과 스프링이 관리하는 Bean 읽기와 생성을 모두 자동으로 설정됩니다.
주의 : @SpringBootApplication 이 있는 위치부터 설정을 읽어가기 때문에 이클래스는 항상 프로젝트의 최상단에 위치해야만 합니다.
main method 에서 실행하는 SpringApplication.run() 으로 인해 내장 WAS 를 실행하게 됩니다.
spring boot는 WAS를 따로 설치하지 않고 내장 WAS 를 이용하기 때문에 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있습니다.
👻 Json을 반환하는 RestController 를 생성해봅시다.
@RestController -> 1
public class HelloController{
@GetMapping("/hello") -> 2
public String hello() {
return "hello";
}
}
- json 을 반환하는 컨트롤러로 만들어 줍니다.
- http method 인 get의 요청을 받을 수 있는 api를 만들어 줍니다.
hello 를 리턴하는 기능을 만들었으니 테스트 코드를 작성을 해야겠죠??
👻 테스트 코드를 작성해보자
@WebMvcTest(controllers = HelloController.class) -> 1
class HelloControllerTest{
@Autowired -> 2
private MockMvc mvc; -> 3
@Test -> 4
@DisplayName("hello_반환되다") -> 5
void hello() throws Exception{
// given
String hello = "hello";
// when && then
mvc.perform(get("/hello")) -> 6
.andExpect(status().isOk()) -> 7
.andExpect(content().string(hello)); -> 8
}
}
- web 관련된 클래스들의 테스트를 하기 위한 에노테이션 입니다. @Controller, @ControllerAdvice 등 에사용하고 @Service 나 @Repository 에는 사용 할 수 없습니다.
- @Autowired 는 스프링이 관리하는 Bean 을 주입하게 해줍니다.
- 웹 api 를 테스트 할 때 사용하고 http의 method 인 get, post 등을 테스트 할 수 있습니다.
- 테스트 코드를 사용 할 때 @Test 를 붙여줍니다.
- 테스트 코드의 메서드 이름을 지어 줄 수 있습니다.
- MockMvc 를 통해 http get 요청을 합니다. 체이닝이 지원되어 여러 기능을 이어서 선언할 수 있습니다.
- mvc.get(”/hello”) 의 결과를 검증하고 status 가 isok 인지 검증합니다.
- mvc.get(”/hello”) 의 결과를 검증하고 응답 본문의 내용을 검증합니다. 반환 값이 “hello” 이므로 “hello” 가 맞는지 검증합니다.
'Book > Spring boot 와 AWS로 혼자 구현하는 웹서비스' 카테고리의 다른 글
[Book] 9) API 만들어보기! - 2 (0) | 2022.03.30 |
---|---|
[Book] 8) API 만들어보기! - 1 (0) | 2022.03.30 |
[Book] 7) 출력되는 쿼리문을 MySQL 문법으로 수정 후 이슈 (0) | 2022.03.30 |
[Book] 6) JPA 로 데이터베이스를 다루어보자! (0) | 2022.03.29 |
[Book] 5) 롬복(Lombok) 을 사용해보자! (0) | 2022.03.28 |
[Book] 3) 테스트 코드를 작성해보자! (0) | 2022.03.27 |
[Book] 2) 인텔리제이에서 깃허브와 연동해보자! (0) | 2022.03.27 |
[Book] 1) 프로젝트를 만들고 의존성을 추가해보자! (0) | 2022.03.27 |