2016-08-03 2 views
6

Spring Boot 1.4 hinzugefügt @WebMvcTest, die die Teile verdrahten, die benötigt werden, um ein Web Slice meiner Anwendung zu testen. Das ist fantastisch, aber ich möchte auch sicherstellen, dass meine benutzerdefinierten Filter und der Sicherheitscode verdrahtet sind, damit ich überprüfen kann, ob das auch richtig funktioniert.Wie kann ich @WebMvcTest verwenden und auch eigene benutzerdefinierte Filter hinzufügen?

Wie kann ich benutzerdefinierte Filter hinzufügen, wenn Sie @WebMvcTest verwenden?

Antwort

0

Neben Frühjahr Boot-Optionen @Phil Webb wies darauf hin, können Sie Ebene Spting Framework-Funktionen verwenden und so etwas tun:

@Autowired 
private WebApplicationContext context; 

@Autowired 
private FilterChainProxy springSecurityFilter; 

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

@AutoConfigureWebMvc derzeit importieren die folgenden Autokonfigurationsklassen (siehe spring.factories in der spring-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 

aus dieser Liste MockMvcSecurityAutoConfiguration wird automatisch die Integration mit dem Sicherheitsfilter bieten.

Wenn Sie Unterstützung für zusätzliche Filter hinzufügen müssen, können Sie Ihre eigenen MockMvcBuilderCustomizer (siehe MockMvcSecurityConfiguration.SecurityMockMvcBuilderCustomizer zur Inspiration) schreiben.

Sie können entweder verschachtelte @TestConfiguration Klasse verwenden Ihre Customizer in einem bestimmten Test Haken, Sie könnten Sie Ihre eigene spring.factories und verwenden Sie die AutoConfigureMockMvc Schlüssel hinzufügen, um es automatisch zu allen Tests hinzufügen.

1

Bei Verwendung von @WebMvcTest mit Spring Security und einem benutzerdefinierten Filter wird dieser automatisch in die MockMvc Instanz konfiguriert. Sie können dies in rwinch/spring-boot-sample/tree/so-38746850-webmvctest-customfilters arbeiten sehen. Insbesondere zeigt die DemoApplicationTests, dass Spring Security ordnungsgemäß eingerichtet ist und der benutzerdefinierte Filter eingerichtet ist.

Spring Boot fügt automatisch alle Filter s hinzu, die mit SpringBootMockMvcBuilderCustomizer.addFilters eingerichtet werden.

MockMvcSecurityConfiguration ist die Einrichtung Spring Security der Testunterstützung verwendet (d Ermöglicht @MockUser durch Zugabe von Spring Security der SecurityMockMvcRequestPostProcessors.testSecurityContext() zum MockMvc Instanz verwenden.

Verwandte Themen