2016-08-03 129 views

回答

0

除了春季啓動選項@Phil韋伯指出的那樣,你可以使用普通Spting框架的功能和做這樣的事情:

@Autowired 
private WebApplicationContext context; 

@Autowired 
private FilterChainProxy springSecurityFilter; 

@Before 
public void setup() { 
    mockMvc = MockMvcBuilders 
      .webAppContextSetup(context) 
      .addFilters(springSecurityFilter) 
      .apply(SecurityMockMvcConfigurers.springSecurity()) 
      .build(); 
} 
3

@AutoConfigureWebMvc目前導入以下的自動配置類(見spring.factoriesspring-boot-test-autoconfigure JAR):

# 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會自動提供安全過濾器的集成。

如果您需要添加對其他過濾器的支持,您可以編寫自己的MockMvcBuilderCustomizer(請參閱MockMvcSecurityConfiguration.SecurityMockMvcBuilderCustomizer獲取靈感)。

您可以使用嵌套@TestConfiguration類掛鉤您定製成一個特定的測試,你可以添加自己的spring.factories和使用AutoConfigureMockMvc鍵自動將其添加到所有測試。

1

在Spring Security和自定義過濾器中使用@WebMvcTest時,它將自動配置到MockMvc實例中。你可以在rwinch/spring-boot-sample/tree/so-38746850-webmvctest-customfilters看到這個工作。具體來說,DemoApplicationTests表明Spring Security已正確設置並且自定義篩選器已設置。

Spring Boot自動添加所有的Filter s使用SpringBootMockMvcBuilderCustomizer.addFilters設置。

MockMvcSecurityConfiguration用於設置Spring Security的測試件(即通過增加Spring Security的SecurityMockMvcRequestPostProcessors.testSecurityContext()MockMvc情況下允許使用@MockUser

相關問題