더북(TheBook)

4.2.1 스프링 MVC 모킹하기

스프링 3.2부터 스프링 프레임워크는 스프링 MVC를 모킹하여 웹 애플리케이션을 테스트하는 아주 유용한 기능을 제공한다. 이 기능으로 실제 서블릿 컨테이너에서 컨트롤러를 실행하지 않고도 컨트롤러에 HTTP 요청을 할 수 있다. 스프링 Mock MVC 프레임워크는 애플리케이션을 마치 서블릿 컨테이너에서 실행하는 것처럼 스프링 MVC를 흉내 내지만 실제 컨테이너에서 실행하지는 않는다.

테스트에서 Mock MVC를 설정하려면 MockMvcBuilders를 사용한다. 이 클래스는 정적 메서드 두 개를 제공한다.

standaloneSetup() : 수동으로 생성하고 구성한 컨트롤러 한 개 이상을 서비스할 Mock MVC를 만든다.

webAppContextSetup() : 짐작건대 구성된 컨트롤러 한 개 이상을 포함하는 스프링 애플리케이션 컨텍스트를 사용하여 Mock MVC를 만든다.

 

이 두 옵션의 가장 큰 차이는 standaloneSetup() 메서드는 테스트할 컨트롤러를 수동으로 초기화하고 주입하기를 기대하는 반면, webAppContextSetup() 메서드는 (스프링이 로드한) WebApplicationContext의 인스턴스로 작동한다는 점이다. standaloneSetup() 메서드는 한 컨트롤러에 집중하여 테스트하는 용도로만 사용한다는 점에서 유닛 테스트와 유사하다. 반면에 webAppContextSetup() 메서드는 스프링이 컨트롤러는 물론 의존성까지 로드하여 완전한 통합 테스트를 할 수 있게 한다.

여기서는 webAppContextSetup() 메서드를 사용하여 스프링 부트가 자동으로 구성한 애플리케이션 컨텍스트에서 초기화하여 주입된 것처럼 ReadingListController를 테스트하자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.