스프링 MVC에서 TDD를 위한 기초

2017. 1. 26. 15:00Dev/Spring

반응형

스프링은 POJO를 지향하니까 그에 기반한 테스트역시 쉽다. 하지만 스프링 MVC는 HTTP 요청을 처리하는 구조를 가지고 있기에 단순한 POJO 테스트를 넘어서는 테스트 해야한다.


아래의 컨트롤러가 있다고 해보자

import static org.springframework.web.bind.annotation.RequestMethod.*;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HomeController {

  @RequestMapping(method = GET)
  public String home(Model model) {
    return "home";
  }

}

HomeController를 테스트 하려 했을 때 단순히 HomeController객체의 리턴값을 home이라고 확인하는 것에 그치면 안된다. 아래의 테스트코드를 확인해보자.

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;

import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;

import spittr.web.HomeController;

public class HomeControllerTest {

  @Test
  public void testHomePage() throws Exception {
    HomeController controller = new HomeController();
    MockMvc mockMvc = standaloneSetup(controller).build();
    mockMvc.perform(get("/")) // GET수행 
           .andExpect(view().name("home")); // 홈뷰를 보여줌
  }

}

위와 같이 GET 요청을 수행해주고 리턴되는 값이 home과 같음을 확인해야 한다.


HTTP 요청과 같은 스프링 MVC 구조를 바탕으로 테스트해야 한다.

반응형