【问题标题】:Can I test servlet filters with REST Assured?我可以使用 REST Assured 测试 servlet 过滤器吗?
【发布时间】:2019-05-09 13:35:11
【问题描述】:

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

我的测试没有什么花哨的;它基本上减少到

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

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

【问题讨论】:

    标签: java servlet-filters rest-assured


    【解决方案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();
    }
    

    【讨论】:

    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2019-06-13
    相关资源
    最近更新 更多