es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 miFiltro() { // esta parte sí se está invocando
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(...);
  }
}
Tags:  , ,

Answer

  1. Avatar for 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 a ServletContext#getFilterRegistrations() en la clase MyTest.

Comments are closed.