MockMvc 测试 OPTIONS 请求
Posted
技术标签:
【中文标题】MockMvc 测试 OPTIONS 请求【英文标题】:MockMvc testing OPTIONS request 【发布时间】: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,以便我可以设置相同的选项?
我现在已经退回到设置模拟请求/响应对象并手动调用方法......
【问题讨论】:
【参考方案1】:您可以使用该选项简单地创建您的 MockMvc
对象
this.mockMvc = MockMvcBuilders.standaloneSetup(this.controller)
.dispatchOptions(true)
.build();
Here'sjavadoc。
【讨论】:
以上是关于MockMvc 测试 OPTIONS 请求的主要内容,如果未能解决你的问题,请参考以下文章
org.springframework.web.util.NestedServletException : 单元测试中的 MockMVC 请求处理失败