[교재] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
1. Controller
1-1. 폴더 구조
1-2. Application.java
프로젝트의 메인 클래스로, 항상 프로젝트 패키지의 최상단에 위치해야 한다.
package com.springboot.seoyamin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
💡 SpringApplication.run을 통해 내장 WAS (Web Application Server) 실행됨
[장점 1] 톰캣을 설치할 필요 없음
[장점 2] 언제 어디서나 동일한 환경에서 spring boot 배포 가능
1-3. HelloController.java
간단한 api로, @GetMapping을 통해 HTTP 메소드인 get의 요청을 받을 수 있는 api를 만든 것이다.
/hello로 request가 오면, 문자열 "hello"를 리턴한다.
package com.springboot.seoyamin.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
2. Controller Test
2-1. 폴더 구조
2-2. HelloControllerTest.java
보통 테스트 코드는 [테스트 대상 클래스명] + Test 의 이름을 붙인다.
package com.springboot.seoyamin.web;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void hello가_리턴된다() throws Exception {
String hello = "hello";
mvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string(hello));
}
}
💡 private MocMvc mvc
- 웹 api를 테스트할 때 사용됨
- 스프링 MVC 테스트의 시작점
- 해당 클래스를 이용하여 HTTP의 GET, POST 등에 대하여 api 테스트를 할 수 있다.
- mvc.perform(get("/hello")) : MocMvc를 이용해서 /hello 주소로 HTTP GET 요청 보냄
💡 .andExpect( )
- mvc.perfom의 결과를 검증하는 역할
- .andExpect(status().isOk()) : HTTP Header의 status를 검증
- .andExpect(content().string(hello)) : Controller에서 리턴한 값이 hello인지 검증
'Spring > Spring Boot' 카테고리의 다른 글
[Spring boot - OAuth2] OAuth란 ? (0) | 2022.11.12 |
---|---|
[Vue.js - Spring Boot - MySQL] 프론트 & 백 연동 (0) | 2022.09.12 |
[Vue.js - Spring Boot - MySQL] 프로젝트 생성 (0) | 2022.09.11 |
[Spring Boot] lombok & Dto (0) | 2022.08.30 |
[Spring boot INIT] 개발 환경 설정, 프로젝트 생성(initializer) (0) | 2022.01.13 |