gpt4 book ai didi

spring - 如何通过 MockMvc 为每个请求设置 servlet 路径

转载 作者:行者123 更新时间:2023-12-04 15:34:29 25 4
gpt4 key购买 nike

是否可以为通过 MockMvc 的所有请求(获取、发布、放置、删除)设置 servlet 路径?

Spring 调度 servlet 映射到/rest/*
但是在我的测试中,我必须删除 url 中的/rest 部分,否则 Spring 测试无法识别 Controller 。

编辑

@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")) 

像魅力一样为我工作。所以问题中的答案有效。

关于spring - 如何通过 MockMvc 为每个请求设置 servlet 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com