부트 개념과 활용-19.HtmlUnit
스프링 웹 MVC 8부: HtmlUnit
Html을 단위테스트 하기 위한 툴.
폼 전송, 폼 서브밋 하는 걸 Mock할 수도
특정 타입(브라우저)인 척,
문서를 여러 가지 방법으로 엘리먼트를 가져와서 값들을 확인, 비교하거나
클래스 네임으로도, 태그 명으로도 가져올 수 있다.
여러가지 방법으로 엘리먼트 가져오는 것이 가능.
자세한 내용 참조
http://htmlunit.sourceforge.net/gettingStarted.html
HTML 템플릿 뷰 테스트를 보다 전문적으로 하자.
의존성 추가
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<scope>test</scope>
</dependency>
@Autowire WebClient
@ExtendWith(SpringExtension.class) // junit 5 기준
@WebMvcTest(SampleController.class)
class SampleControllerTest {
@Autowired
WebClient webClient; // MockMvc와 같이 사용가능
@Test
public void hello() throws Exception {
HtmlPage page = webClient.getPage("/hello");
HtmlHeading1 h1 = page.getFirstByXPath("//h1"); // XPath 활용
assertThat(h1.getTextContent().equals("jaeuk"));
}
}
의존성 주입을 받은 후에는 MockMVC가 아닌 WebClient를 주입받을 수 있다. (MockMvc도 같이 사용 가능)
이를 통해서 getPage 요청을 할 수 있다.
HtmlPage로 바꿔주어야 다양한 기능들(html에 특화된) 활용 가능.