Я создал пользовательскую аннотацию для версии своих 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
все изменения конфигурации будут приняты по умолчанию.
EDIT 1:
Я также должен добавить, что я использую Spring Boot 2.1.2.RELEASE
EDIT 2: чтобы уточнить, аннотация управления версиями при применении к контроллеру принимает запрос, который начинается с версии, то есть: /users
становится /v1/users
Это работает нормальнозапросы приходят, но только для тестов /users
работа, /v1/users
возвращает 404 (не найдено)
Я поместил точки отладки в конфиги и пользовательский RequestMappingHandlerMapping
и уверен, что этоMockMvc
.
не обрабатывается. Я попытался автоматически подключить MockMvc, но то же поведение сохраняется, но возникает дополнительная проблема, связанная с невозможностью настройки Spring RestDocs.