gpt4 book ai didi

java - Spring Testing Mock MVC 不应用自定义 RequestMappingHandlerMapping

转载 作者:行者123 更新时间:2023-11-30 12:07:18 24 4
gpt4 key购买 nike

我已经创建了一个自定义注解来对我的 API 进行版本控制。

运行应用程序时一切正常。

但是,当我尝试使用 MockMvc 测试我的 Controller 时,我编写的自定义 RequestMappingHandlerMapping 没有被应用。

我正在像这样初始化 MockMvc

    @Before
public void setup() {
mockMvc = MockMvcBuilders
.webAppContextSetup(webApplicationContext)
.apply(documentationConfiguration(this.restDocumentation))
.apply(springSecurity())
.build();
}

我重写默认值以使用我的自定义 RequestMappingHandlerMapping 像这样

@Configuration
public class RoutingConfig {
@Bean
public WebMvcRegistrations webMvcRegistrationsPathHandlerMapping() {
return new WebMvcRegistrations() {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
return new APIPathRequestHandlerMapping();
}
};
}
}

知道发生了什么事吗?我认为 MockMvc 的 Web 应用程序上下文初始化会默认获取所有配置更改。

编辑 1:

我还应该补充一点,我正在使用 Spring Boot 2.1.2.RELEASE

编辑 2:澄清一下,应用于 Controller 的版本注释接受以版本开头的请求,即:/users 变为 /v1/users

这适用于即将到来的正常请求,但对于测试仅 /users 有效,/v1/users 返回 404(未找到)

我在配置和自定义 RequestMappingHandlerMapping 中放置了调试点,并确保 MockMvc 不会拾取它。

我已经尝试 Autowiring MockMvc,但同样的行为仍然存在,还有无法配置 Spring RestDocs 的额外问题。

最佳答案

@AutoConfigureMockMvc Annotation that can be applied to a test class to enable and configure auto-configuration of MockMvc.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class DemoApplicationTests {

@Autowired
private MockMvc mockMvc;

@Test
public void contextLoads() {
System.out.println("test "+mockMvc);
}
}

注意:我应用了自定义 RequestMappingHandlerMapping,它已成功应用 MockMvc 自动配置。

关于java - Spring Testing Mock MVC 不应用自定义 RequestMappingHandlerMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056013/

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