我可以使用REST Assured测试servlet过滤器吗?

时间:2019-05-09 13:35:12

标签: java servlet-filters rest-assured

我有一个带有@WebFilter的Spring Boot MVC应用程序,该应用程序向每个响应添加了自定义标头。当我实际运行该应用程序时,它运行良好,但令我感到惊讶的是,该过滤器在我的REST保证测试期间未运行。

我的考试没什么花哨的。它基本上减少到

RestAssuredMockMvc.standaloneSetup(new MyController());
boolean headerExists = given().when().get().headers().hasHeaderWithName("my-header");

这是预期的吗?我应该做些额外的事情来设置过滤器链吗?

1 个答案:

答案 0 :(得分:1)

MockMvc是用于测试控制器而不是完整的Web容器的基础结构。

如果要使过滤器正常工作,则必须添加它。 看起来像这样:

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setUp() {
   Collection<Filter> filterCollection = wac.getBeansOfType(Filter.class).values();
   Filter[] filters = filterCollection.toArray(new Filter[filterCollection.size()]);
   mockMvc = MockMvcBuilders.webAppContextSetup(wac).addFilters(filters).build();
}