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

标签 java servlet-filters rest-assured

我有一个带有 @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/

相关文章:

java - 放心 : Can't find the equalTo method

java - 使用 Apache ActiveMQ + XMPP(而不是普通 XMPP)进行消息传递

java - Boolean 类的 getBoolean(String str) 和 valueOf(String str) 给出不同的输出

java - 单例 Servlet 过滤器

tomcat - tomcat 和 jetty 中的 url 模式

java - 使用放心 put 方法测试 api 时出现错误请求 400 和反序列化错误

java - 放心 解析 JSON 文档失败

java - 控制字符是否具有等效的图形字符?

java - Sun Xml doclet 仍然可用吗?

http - ServletResponse.reset() 是阻止未经授权(注销)用户访问 servlet 的可行方法吗?