[게시글 조회] 컨트롤러 Mock 테스트 1
게시글 조회
스프링 재활도 할 겸 가볍게 게시판을 간단한 테스트까지 겸해서 구현해보려고 한다.
우선 게시글을 조회하는 컨트롤러부터 순서대로 만들어볼 것이다.
그보다 앞서 Hello World 를 출력하는 컨트롤러부터 만들어보자.
PostController
@RestController
public class PostController {
@GetMapping("/posts")
public String get() {
return "Hello World";
}
}
PostControllerTest
직접 localhost:8080/posts 로 들어가서 Hello World 를 확인해도 되지만 테스트코드 연습겸 테스트를 작성한다.
컨트롤러 테스트는 통합테스트이므로 Mockito 라는 라이브러리를 이용하여 Mock 을 해보자.
스프링부트에서는 Gradle에 spring-boot-starter-test 가 들어가있으니 Mockito 의존성을 따로 추가하지 않아도 된다.
가독성을 위해 static import 해둔게 있으니 안뜨는 메서드는 코드블럭의 최상단 static import 를 참고
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@WebMvcTest
class PostControllerTest {
@Autowired
private MockMvc mockMvc;
@DisplayName("/posts 요청시 Hello World 를 출력한다.")
@Test
void get() throws Exception {
mockMvc.perform(
get("/posts")
)
.andExpect(status().isOk())
.andExpect(content().string("Hello World"))
.andDo(print());
}
}
ㄴ @WebMvcTest
@WebMvcTest 는 컨트롤러 계층만 빠르게 테스트 하기 위한 애노테이션이다.
컨트롤러 계층에 필요한 빈들만 의존성 주입을 해주는데, MockMvc 이 여기서 의존성 주입을 받는다.
ㄴ MockMvcResultHandlers.print()
.andDo(print()) 부분이다. 요청과 결과에 대한 상세 내역을 표시한다.
테스트는 성공하고 .andDo(print()) 를 추가해서 위 사진같이 요청과 결과의 상세 내역을 표시해준다.
참고자료)
호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS) - 인프런 | 강의
단순히 애플리케이션 하나를 만드는데 끝나지 않습니다. Spring Boot를 활용한 백엔드부터 Vue.js 모던 프론트엔드 스택을 연동한 서비스 완성 A-Z를 보여드립니다., 🐯이제는 실전이다!🐯이 강의를
www.inflearn.com