У меня есть конечная точка, которая получается из зависимости gradle, скажем, ее /v3/doc
Мне нужно было выставить конечную точку, давайте ее назовем, /v1/info
, которая ударит / v3 / do c внутренне , массажи, некоторые из данных, которые выходят, затем возвращают этот фрагмент данных тому, кто назвал / v1 / info
Я написал код для него (ниже я опускаю часть для массажа для простоты), но модульные тесты выдают ошибку, описанную во время выполнения теста.
Моя конечная точка выглядит так:
@RestController
public class MyController {
@GetMapping("v1/info")
public @ResponseBody SomePojo swag(HttpServletRequest request) {
String s = retrieve(request
.getRequestURL()
.toString()
.split("v1")[0] // get the base URL and tack on what i need
.concat("v3/doc")
);
return new Gson().fromJson(s, SomePojo.class)
}
private String retrieve(String url) {
return new RestTemplate()
.getForEntity(url, String.class)
.getBody();
}
}
модульный тест выглядит так:
@WebMvcTest(MyController.class)
@ActiveProfiles(profiles = "local")
public class MyControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testEndpoint() throws Exception {
mockMvc.perform(get("/v1/info")
.contentType(MediaType.APPLICATION_JSON)
.characterEncoding("utf-8"))
.andExpect(status().isOk());
}
}
ошибка выглядит так:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost/v3/doc": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
Мне интересно, это как-то связано с портом ?? потому что когда я запускаю приложение на 8001, я могу нажать /v3/doc
и /v1/info
без проблем. Но, как вы можете видеть, когда запускаются модульные тесты, порта нет, только localhost. Я не думал, что это имело значение, хотя. Придется ли мне создавать какую-нибудь фальшивую заглушку mvc?