2016-08-03 11 views
6

Spring Boot 1.4 dodano @WebMvcTest, które podłącza się do części potrzebnych do przetestowania plastra internetowego mojej aplikacji. To jest fantastyczne, ale chcę również upewnić się, że moje niestandardowe filtry i kod zabezpieczający są połączone, więc mogę sprawdzić, czy działa poprawnie.Jak korzystać z @WebMvcTest i dodawać własne filtry niestandardowe?

Jak mogę dodać niestandardowe filtry podczas korzystania z @WebMvcTest?

Odpowiedz

0

Oprócz opcji Wiosna Boot @Phil Webb wskazał, można użyć zwykłego funkcje Spting Framework i zrobić coś takiego:

@Autowired 
private WebApplicationContext context; 

@Autowired 
private FilterChainProxy springSecurityFilter; 

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

@AutoConfigureWebMvc obecnie importować następujące klasy automatycznej konfiguracji (patrz spring.factories w 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 

Spośród tej liście MockMvcSecurityAutoConfiguration automatycznie zapewni integrację z filtrem bezpieczeństwa.

Jeśli potrzebujesz dodać obsługę dodatkowych filtrów, możesz napisać swoją własną MockMvcBuilderCustomizer (patrz inspiracja dla MockMvcSecurityConfiguration.SecurityMockMvcBuilderCustomizer).

Można użyć zagnieżdżonego @TestConfiguration klasę zahaczyć swoją Customizer do konkretnego testu, można dodawać własne spring.factories i użyj klucza AutoConfigureMockMvc, aby automatycznie dodać go do wszystkich testów.

1

Podczas korzystania z @WebMvcTest z Spring Security i niestandardowym filtrem, zostanie on automatycznie skonfigurowany do instancji MockMvc. Możesz zobaczyć, że działa to w rwinch/spring-boot-sample/tree/so-38746850-webmvctest-customfilters. W szczególności model DemoApplicationTests demonstruje, że Spring Security jest prawidłowo skonfigurowany, a niestandardowy filtr jest skonfigurowany.

Spring Boot automatycznie dodaje wszystkie Filter s są konfigurowane przy użyciu SpringBootMockMvcBuilderCustomizer.addFilters.

MockMvcSecurityConfiguration służy do testowania wsparcia instalacyjnego Wiosna Security (to pozwala na stosowanie @MockUser dodając Wiosna Security SecurityMockMvcRequestPostProcessors.testSecurityContext() do instancji MockMvc.