Book/Spring boot 와 AWS로 혼자 구현하는 웹서비스

[Book] 14) 머스테치로 화면 구성을 해보자! -1

kkkkkkkkkkkk 2022. 4. 1. 12:58

👻  머스테치 플러그인 설치!

plugin 설정에 들어가서 handlebars/mustache 를 설치해 줍니다.

👻  머스테치 의존성 추가!

build.gradle 파일에 implementation 'org.springframework.boot:spring-boot-starter-mustache' 의존성을 추가해 줍니다.

🕶  index 페이지를 만들어보자!.

resources 파일의 templates 안에 index.mustache 파일을 생성해줍니다.

<!DOCTYPEHTML>
<html>
<head>
    <title>스프링 부트 웹서비스</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
    <h1>스프링</h1>
</body>
</html>

🕶  index 파일을 제어 하는 Controller 를 만들어야합니다.

@Controller
public class IndexController{

    @GetMapping("/")
    public String index() {
        return "index";
    }
}

해당 핸들러는 Dispatcher servlet 동작원리를 이해하면 알 수 있습니다.

인프런 강의 정리

mvc 강의 정리에 dispatcher servlet 동작원리를 참고 해보자!

👻  IndexController 클래스를 테스트 해보자!

  1. TestRestTemplate 사용
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class IndexControllerTest {

    @Autowired
    private TestRestTemplate restTemplate;
    
    @Test
    @DisplayName("IndexController_TEST")
    void IndexControllerTest1() {
    // given && when
    String body = restTemplate.getForObject("/", String.class);

    // then
    assertThat(body).contains("스프링");
    }
}

TestRestTemplate 를 사용하여 body 내용이 “스프링" 이라는 문자열이 있는지 검증 합니다.

  1. @WebMvcTest 사용
@WebMvcTest(controllers = IndexController.class)
class IndexControllerTest{

    @Autowired
    private MockMvc mockMvc;

    @Test
    @DisplayName("IndexController_TEST2")
    void IndexControllerTest2()throws Exception{
        // given && when && then
        mockMvc.perform(get("/")
            .accept(MediaType.TEXT_HTML))
            .andDo(print())
            .andExpect(status().isOk())
            .andExpect(view().name("index"));
    }

}

mockMvc 객체를 사용하여 검증합니다.