컨트롤러 클래스 작성
📝 컨트롤러
- 웹 요청과 응답을 처리하는 컨포넌트
- 모델 데이터를 채워서 응답
- 브라우저에 반환되는 HTML을 생성하기 위해 해당 응답의 웹 요청을 뷰에 전달
src/main/java 아래의 com.dungzi.demo를 우클릭하여 New -> Class 선택
Name 필드에 HomeController 입력하고 Finish 버튼 클릭
HomeController.java에 아래의 코드 추가
package com.dungzi.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
@Controller : HomeController 클래스가 컨트롤러 컴포넌트로 식별되도록 함
@GetMapping : HTTP GET 요청이 수신되면 이 메서드가 해당 요청을 처리함
home() 메서드는 home을 return 하므로 /src/main/resources/templates/home.html이 뷰에 전달된다.
뷰는 /src/main/resources/templates에서 우클릭한 후 New -> Other에서 HTML 파일을 선택한 후 html 코드를 작성한다.
컨트롤러 테스트
/src/test/java 아래의 com.dungzi.demo 우클릭하여 New -> JUnit Test Case 클릭
Name에 HomeControllerTest 입력하고 Finish 버튼 클릭
HomeControllerTest.java에 아래의 코드 추가
package com.dungzi.demo;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.jupiter.api.Assertions.*;
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;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
// HomeController의 웹 페이지 테스트
@WebMvcTest(HomeController.class)
public class HomeControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testHomePage() throws Exception{
mockMvc.perform(get("/")) // Get /를 수행
.andExpect(status().isOk()) // HTTP 200이 되어야 함
.andExpect(view().name("home")) // home 뷰가 있어야 함
.andExpect(content().string( // 콘텐츠에 다음의 내용이 포함되어야 함
containsString("Welcome to...")));
}
}
루트 경로인 /의 HTTP GET 요청을 수행한 후 성공적인지, 뷰 이름이 home이고 "Welcom to..." 메시지가 포함된 결과가 기대한 대로 나오는지 테스트
@WebMvcTest : 스프링 MVC 애플리케이션의 형태로 테스트가 실행되도록 함, @SpringBootTest와 달리 스프링 MVC에 웹 요청을 보내 테스트할 수 있다.
dungzi를 우클릭한 후 Run As -> JUnit Test를 선택하면 프로젝트의 모든 테스트 클래스가 실행된다.
애플리케이션 빌드하고 실행하기
Boot Dashboard에서 local을 확장하여 dungzi를 클릭하고 start 버튼을 클릭하면 실행된다.
이 글은 '스프링 인 액션(크레이그 윌즈 지음)'을 참고하여 작성하였습니다.
'웹 개발 노트' 카테고리의 다른 글
CHAPTER 1. 스프링 시작하기 - (2) 스프링 초기 설정하기 (0) | 2022.06.27 |
---|---|
CHAPTER 1. 스프링 시작하기 - (1) 스프링이란? (0) | 2022.06.26 |