[英]Spring Testing Mock MVC doesn't apply custom RequestMappingHandlerMapping
我創建了一個自定義注釋以對API進行版本控制。
運行應用程序時,一切正常。
但是,當我嘗試使用MockMvc
測試我的控制器時,我編寫的自定義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。
編輯2:澄清一下,當應用於控制器時,版本控制批注會接受以版本開頭的請求,即: /users
變為/v1/users
這適用於正常的請求,但是對於僅/users
工作的測試, /v1/users
返回404(未找到)
我已將調試點放置在配置和自定義RequestMappingHandlerMapping
並確保MockMvc
不會將其拾取。
我試圖自動裝配MockMvc,但是相同的行為仍然存在,但又存在無法配置Spring RestDocs的問題。
@AutoConfigureMockMvc注釋,可以將其應用於測試類以啟用和配置MockMvc的自動配置。
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class DemoApplicationTests {
@Autowired
private MockMvc mockMvc;
@Test
public void contextLoads() {
System.out.println("test "+mockMvc);
}
}
注意:我應用了自定義RequestMappingHandlerMapping,它已成功與MockMvc自動配置一起應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.