我正在使用 MockMvc 编写集成测试,我想知道是否有办法从 web.xml 加载 servlet 映射(这通常无关紧要)。
我有一个HandlerInteceptor
将请求 URI(来自HttpServletRequest
)与模板(使用AntPathMatcher
)相匹配的自定义。
在 web.xml 中,我定义了这样的 servlet 映射(带有相应的 mobile-context.xml):
<servlet-mapping>
<servlet-name>mobileServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
所以当一个控制器定义一个像这样的映射时"/operation"
,请求真的应该被发送到"/services/operation"
。我的自定义HandlerInterceptor
将 URI 请求与"/**/services/{operationName}/**"
.
我的应用程序在 Tomcat 上运行良好。但是,在@ContextConfiguration 中,我只能指定mobile-context.xml,因为web.xml 不是spring 配置文件。因此,MockMvc 只允许我向"/operation"
而不是发出请求"/services/operation"
,从而导致我HandlerInterceptor
抛出异常。
有没有办法让 MockMvc 注册 servlet 映射,或者有什么聪明的方法解决这个问题?提前致谢。
编辑:这里有一个类似的问题表明我需要的东西是不可能的,但我没有更改源代码的权限,所以我不能修改模板或HandlerInterceptor
.