【问题标题】:MockMvc testing OPTIONS requestMockMvc 测试 OPTIONS 请求
【发布时间】:2014-11-10 08:56:48
【问题描述】:

多年后重返 Java/Spring。试图开发一个控制器测试。我想为一个 OPTIONS 请求测试一个处理程序,但是当我使用 MockMvc 来做类似的事情时

    MockHttpServletRequestBuilder optionsRequest = options("/endpoint/1234");
    optionsRequest.header("Origin", "http://blah");
    this.mockMvc.perform(optionsRequest).
        andExpect(status().isOk()).
        andExpect(header().string("Access-Control-Allow-Credentials", "application/json")).
        andExpect(header().string("Access-Control-Allow-Origin", "application/json")).
        andExpect(header().string("Access-Control-Allow-Methods", "application/json")).
        andExpect(header().string("Access-Control-Allow-Headers", "application/json"));

有设置

this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();

controller 是我的控制器的一个实例,选项处理程序永远不会被触发。

在我的服务器启动中,我们需要这样做

dispatcherServlet.setDispatchOptionsRequest(true);

获取正在运行的应用程序中处理的请求。

有没有办法在测试设置中访问调度程序 servlet,以便我可以设置相同的选项?

我现在已经退回到设置模拟请求/响应对象并手动调用方法......

【问题讨论】:

    标签: java unit-testing spring-mvc cors


    【解决方案1】:

    您可以使用该选项简单地创建您的 MockMvc 对象

    this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller)
                                  .dispatchOptions(true)
                                  .build();
    

    Here'sjavadoc。

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 2015-09-04
      • 2018-05-22
      • 2021-01-26
      • 1970-01-01
      • 2014-02-06
      • 2018-05-25
      • 2018-07-10
      • 1970-01-01
      相关资源
      最近更新 更多