- 루비, js, 파이썬, PHP, java, 펄, GO, ASP 등 대부분의 언어 지원하는 템플릿 엔진
- 자바에서는 서버 템플릿 엔진, js에서는 클라이언트 템플릿 엔진으로 사용 가능
머스테치 의존성 추가
build.gradle에 등록
compile('org.springframework.boot:spring-boot-starter-mustache')
파일 위치는 기본적으로 src/main/resources/templates
IndexController
package com.springAWS.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController { //페이지에 관련된 컨트롤러
@GetMapping("/")
public String index() {
return "index";
//머스테치 스타터 덕에 컨트롤러에서 문자열 반환 시 앞의 경로와 뒤의 파일 확장자 자동 지정됨
//src/main/resources/templates/index.mustache로 전환돼 View Resolver 처리하게 됨
}
@GetMapping("/posts/save")
public String postsSave(){
return "posts-save";
}
}
- 머스테치 스타터 덕분에 컨트롤러에서 문자열 반환할 때 앞의 경로, 파일 확장자 자동 지정됨
- 페이지 관련된 컨트롤러는 모두 IndexController 사용함
IndexControllerTest
package com.springAWS.web;
import junit.framework.TestCase;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = RANDOM_PORT)
public class IndexControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void mainPageLoading(){
//when
String body = this.restTemplate.getForObject("/", String.class);
//then
assertThat(body).contains("스프링 부트로 시작하는 웹 서비스");
}
}
- URL 호출 시 페이지 내용 제대로 호출되는지 확인 위한 테스트