是否可以为通过MockMvc的所有请求(获取,发布,放置,删除)设置servlet路径?
Spring调度Servlet映射到/ rest / *但是在测试中,我必须删除url中的/ rest部分,否则Spring测试无法识别控制器。
编辑
@@ Sotirios:
可能有类似的事情:
public class MyWebTests {
private MockMvc mockMvc;
@Before
public void setup() {
mockMvc = standaloneSetup(new AccountController())
.defaultRequest(get("/")
.contextPath("/app").servletPath("/main")
.accept(MediaType.APPLICATION_JSON).build();
}}
但是我不知道如何为所有请求设置servlet路径。上面的代码来自http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/testing.html。
或者是否只能使用standaloneSetup定义ServletPath?
我遇到了ServletException(“ Circular view path ...”)的问题,该问题仅在实际部署中发生,而在我们对MockMvc的测试中从未发生过。
问题是方法未使用@ResponseBody进行注释。该测试运行良好,因为servlet路径为空,因此将viewName解析为与“ callPath”不同的“ servletPath / callPath”,因此未引发ServletException。因此,我需要在测试请求上设置ServletPath,以更接近应用程序的部署方式,并在万一忘记注释的情况下使我们的测试失败。
.defaultRequest(get("/").servletPath("/main"))
像魅力一样为我工作。因此问题中的答案有效。
确定,
但是如果必须在服务器端取回与您调用的不同Web服务相对应的不同servletPath来处理它,怎么办?
您是否将其应用于对mokMvc.perform方法的每次调用?谢谢