我有一个带有 @WebFilter
的 Spring Boot MVC 应用程序,它向每个响应添加自定义 header 。当我实际运行该应用程序时,它工作正常,但令我有点惊讶的是,该过滤器在我的 REST Assured 测试期间没有运行。
我的测试中没有什么特别的;它基本上减少到
RestAssuredMockMvc.standaloneSetup(new MyController());
boolean headerExists = given().when().get().headers().hasHeaderWithName("my-header");
这是预期的吗?我应该做一些额外的事情来设置过滤器链吗?
最佳答案
MockMvc 是一个用于测试 Controller 的基础设施,而不是完整的 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();
}
关于java - 我可以使用 REST Assured 测试 servlet 过滤器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060668/