안녕하세요 오늘은 MockMvc 객체에 필터를 적용하는 방법에 대해 포스팅해보도록 하겠습니다.
저번 포스팅에서 커스텀 필터를 만들어 적용하는 과정에서 테스트 시 필터가 제대로 적용되지 않는 문제가 있었습니다.
문제 해결은 단순했습니다. 바로 생성한 MockMvc 클래스에 필터를 추가하는 것입니다. MockMvc 클래스는 실제 서블릿 컨테이너를 사용하지 않고 가상의 서블릿 컨테이너를 이용하여 테스트용으로 시뮬레이션하는 역할을 담당합니다. 따라서 실제 서비스에 필터가 적용되었더라도 MockMvc에서는 가상의 환경에서 진행하기 때문에 필터가 적용되어 있지 않은 상태입니다. 따라서 아래의 코드처럼 MockMvc 객체를 생성 시 .addFilter를 통해 추가하고자 하는 커스텀 필터를 추가해줍니다.
@BeforeEach
public void setup() {
String secret = {secret_key};
TokenProvider tokenProvider = new TokenProvider(secret,{expired_miliseconds});
JwtFilter jwtFilter = new JwtFilter(tokenProvider);
mvc = MockMvcBuilders
.webAppContextSetup(context)
.addFilter(jwtFilter)
.build();
}