[SPRING] @WebMvcTest를 사용하고 사용자 정의 필터를 어떻게 추가 할 수 있습니까?
SPRING@WebMvcTest를 사용하고 사용자 정의 필터를 어떻게 추가 할 수 있습니까?
Spring Boot 1.4는 @WebMvcTest를 추가하여 응용 프로그램의 웹 조각을 테스트하는 데 필요한 부분을 연결합니다. 이것은 환상적입니다. 그러나 맞춤 필터와 보안 코드가 연결되어 있는지 확인하여 제대로 작동하는지 확인할 수도 있습니다.
@WebMvcTest를 사용할 때 어떻게 사용자 정의 필터를 추가 할 수 있습니까?
해결법
-
==============================
1.@AutoConfigureWebMvc는 현재 다음과 같은 자동 구성 클래스를 가져옵니다 (spring-boot-test-autoconfigure jar의 spring.factories 참조).
@AutoConfigureWebMvc는 현재 다음과 같은 자동 구성 클래스를 가져옵니다 (spring-boot-test-autoconfigure jar의 spring.factories 참조).
# AutoConfigureMockMvc auto-configuration imports org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc=\ org.springframework.boot.test.autoconfigure.web.servlet.MockMvcAutoConfiguration,\ org.springframework.boot.test.autoconfigure.web.servlet.MockMvcSecurityAutoConfiguration,\ org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebClientAutoConfiguration,\ org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebDriverAutoConfiguration
이 목록에서 MockMvcSecurityAutoConfiguration은 자동으로 보안 필터와의 통합을 제공합니다.
추가 필터에 대한 지원을 추가해야하는 경우 자체 MockMvcBuilder 사용자 정의 프로그램을 작성할 수 있습니다 (영감을 얻으려면 MockMvc SecurityConfiguration.SecurityMockMvcBuilder 사용자 정의 프로그램을 참조하십시오).
사용자 정의 프로그램을 중첩 된 @TestConfiguration 클래스를 사용하여 사용자 정의 프로그램을 특정 테스트에 연결하거나, 고유 한 spring.factories를 추가하고 AutoConfigureMockMvc 키를 사용하여 자동으로 모든 테스트에 추가 할 수 있습니다.
-
==============================
2.@Phil Webb이 지적한 Spring Boot 옵션 외에도 Spring Framework의 일반적인 기능을 사용하여 다음과 같이 할 수있다.
@Phil Webb이 지적한 Spring Boot 옵션 외에도 Spring Framework의 일반적인 기능을 사용하여 다음과 같이 할 수있다.
@Autowired private WebApplicationContext context; @Autowired private FilterChainProxy springSecurityFilter; @Before public void setup() { mockMvc = MockMvcBuilders .webAppContextSetup(context) .addFilters(springSecurityFilter) .apply(SecurityMockMvcConfigurers.springSecurity()) .build(); }
-
==============================
3.스프링 보안과 커스텀 필터로 @WebMvcTest를 사용하면 자동으로 MockMvc 인스턴스로 설정됩니다. 이 작업은 rwinch / spring-boot-sample / tree / so-38746850-webmvctest-customfilters에서 볼 수 있습니다. 특히, DemoApplicationTests는 Spring Security가 올바르게 설정되었고 사용자 정의 필터가 설정되었음을 보여줍니다.
스프링 보안과 커스텀 필터로 @WebMvcTest를 사용하면 자동으로 MockMvc 인스턴스로 설정됩니다. 이 작업은 rwinch / spring-boot-sample / tree / so-38746850-webmvctest-customfilters에서 볼 수 있습니다. 특히, DemoApplicationTests는 Spring Security가 올바르게 설정되었고 사용자 정의 필터가 설정되었음을 보여줍니다.
SpringBoot는 SpringBootMockMvcBuilderCustomizer.addFilters를 사용하여 모든 필터를 자동으로 추가합니다.
MockMvcSecurityConfiguration은 Spring Security의 테스트 지원을 설정하는데 사용된다. 즉, Spring Security의 SecurityMockMvcRequestPostProcessors.testSecurityContext ()를 MockMvc 인스턴스에 추가함으로써 @MockUser 사용을 허용한다.
from https://stackoverflow.com/questions/38746850/how-can-i-use-webmvctest-and-also-add-in-my-own-custom-filters by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring sockjs websocket 서버 구현을 위해 출력 버퍼를 증가시키는 방법 (0) | 2019.04.07 |
---|---|
[SPRING] JSF2 : 봄부터 managedbean에 서비스 객체를 삽입 하시겠습니까? (0) | 2019.04.07 |
[SPRING] 봄 최대 절전 모드 트랜잭션 로깅 (0) | 2019.04.07 |
[SPRING] Eclipse에서 비어있는 웹 앱 라이브러리 - "jars"가 없습니다. (0) | 2019.04.07 |
[SPRING] 인터페이스에 대한 Spring 의존성 삽입 (0) | 2019.04.07 |