При интеграционном тестировании приложения с весенней загрузкой, mock Mvc использует несколько другой URL. Я получаю его из HttpServletRequest в моем контроллере, при тестировании он показывает это: http://localhost/v1/app/full/sales
, а если я запускаю приложение, он показывает это: http://localhost/api/v1/app/full/sales
В контроллере настроен параметр basePath: basePath = "/v1/app"
server.servlet.context-path=/api
указано и в application-test.properties, и в application.properties.
Вот аннотации теста, которые я использую:
@SpringBootTest(classes = {SvcBoot.class}, properties = {"spring.main.allow-bean-definition-overriding=true"})
@ContextConfiguration(classes = {JacksonTestConfiguration.class, ClockTestConfiguration.class})
@TestPropertySource(locations="classpath:application-test.properties")
@ActiveProfiles("test")
запрос выполняется так:
final MvcResult mvcResult = getMvc().perform(getContent().content(requestJsonString)
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON))
.andReturn();
Сначала я подозревал, что он не читает файл application-test.properties должным образом, поэтому он имеет этот параметр при нормальной работе, но не при тестировании. Поэтому я попытался добавить @TestPropertySource(locations="classpath:application-test.properties")
в тест, но это не помогло.
Я использую TestNg, Spring-boot 2.1.6.