La cadena de filtros de Spring no se aplica en la prueba unitaria de MockMvc.
Creé un filtro personalizado y lo registré en WebConfig, pero al llamar a la API, el filtro no se invoca. Revisé el registro y parece que la cadena de filtros que describí en la configuración no se aplica. Sin embargo, verifiqué que WebConfig se invoque con un depurador.
java
//MyFilter.java
@Componente
public class MyFilter implements Filter {
@Override
doFilter(…) { // esta parte NO se está invocando
…
}
}
java
//WebConfig.java
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean
regBean = new FilterRegistrationBean();
regBean.setFilter(new MyFilter());
regBean.setOrder(0);
return regBean;
}
}
//MyTest.java
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyApplication.class)
public class MyTest {
private MockMvc mockMvc;
@Autowired
WebApplicationContext ctx;
@Before
public void before() {
mockMvc = MockMvcBuilders.webApplicationSetup(ctx).build();
}
@Test
public void hacerPrueba() {
mockMvc.perform(...);
}
}
davy.ai
Parece que la cadena de filtros que describiste en la configuración no está aplicada. ¿Has verificado si el
MyFilter
está registrado correctamente? Puedes verificar los filtros registrados llamando aServletContext#getFilterRegistrations()
en la claseMyTest
.