목차
MockTest
과거에는 view페이지를 만든 뒤 Tomcat을 실행하고 웹 페이지에서 결과를 확인하는 방식의 코드를 작성해 왔는데, 이 방식은 시간도 오래 걸리고 테스트를 자동화 하기에도 어려움이 많아서 Mock을 이용해서 Controller를 테스트 하는 방식이 있음
MockMvc는 말 그대로 '가짜 mvc'라고 생각하면 되고, 가짜로 URL과 parameter 등을 브라우저에서 사용하는 것처럼 만들어서 Controller를 실행 해 볼 수 있음
우선 아래처럼 BoardController에서 게시글 전체 목록을 가져오는 예제 코드를 작성함
그 다음 아래 이미지처럼 테스트 코드는 웹을 개발할 때 매번 URL을 테스트 하기 위해 Tomcat을 실행하는 불편한 단계를 생략하기 위해서 기존과 다르게 작성
@WebAppConfiguration 어노테이션은 Servlet의 ServletContext를 이용하기 위해서인데, 스프링에서는 WebApplicationContext라는 존재를 이용하기 위해서임
@Before 어노테이션이 적용된 method는 모든 테스트 전에 매번 실행되는 method가 됨, @Before는 import 시 jUnit을 이용해야 함
MockMvcRequestBuilders라는 존재를 이용해서 GET 방식의 호출을 하고 이후에는 BoardController의 getList()에서 반환된 결과를 이용해서 model에 담겨진 데이터들을 확인함
아래는 jUnit으로 테스트 한 결과값임, model에 담긴 값이 정상적으로 확인 됨
MockMvc를 이용해서 parameter의 값을 전달해야 하는 경우에는 아래와 같이 처리함(parameter의 값 전달 시 문자열로만 처리해야 함
아래는 BoardController의 내용
url Mapping을 "/board/register"로 하고 parameter로 BoardVO 객체, bno의 값도 전달하기 위해서 RedirectAttributes객체를 받았다
아래는 위의 resister() method를 테스트 하기 위한 테스트 코드임
MockMvcRequestBuilders.post().param("name", "value")이런식으로 추가하면 됨
위의 테스트 코드를 실행한 결과값은 아래와 같음
아래 이미지처럼 실제로 DB에도 정상적으로 등록이 된것을 확인 할 수 있음
출처: 코드로 배우는 스프링 웹 프로젝트(개정판)
'IT > development' 카테고리의 다른 글
[Spring]UriComponentsBuilder(서버단에서 동적으로 URI 생성) (0) | 2022.11.27 |
---|---|
[WebDevelopment]pagination (0) | 2022.11.27 |
[Spring]단위테스트 jUnit (0) | 2022.11.27 |
[Spring]spring 404 에러 페이지 처리 (0) | 2022.11.27 |
[Spring]spring RedirectAttribute (0) | 2022.11.27 |