У меня есть несколько resttempletes, настроенных для моего проекта springboot.
Я не могу смоделировать индивидуальный шаблон для моего тестового случая.
Я пытался с тем же именем издеваться, насмешка не происходит.
Вот моя конфигурация
@Bean
public RestTemplate restTemplateA(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(2000)
.setReadTimeout(5000)
.basicAuthorization(aUsername, aPassword)
.build();
}
@Bean
public RestTemplate restTemplateB(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(20000)
.setReadTimeout(50000)
.build();
}
@Bean
public RestTemplate restTemplateC(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(20000)
.basicAuthorization(bUsername, bPassword)
.setReadTimeout(50000)
.build();
}
Фактический вызов resttemplate, который работает нормально, и нам нужно написать контрольный пример:
ResponseEntity<AClass> responseEntity = restTemplateB.exchange(uriBuilder.toUriString(),
HttpMethod.GET, entity, AClass.class);
Mockito.when не работает, и происходит фактический вызов URL и возникает исключение соединения.
@Mock
private RestTemplate restTemplateB;
@Test
public void test_B() throws Exception {
AClass response = gson.fromJson(
FileUtils.readFileToString(ResourceUtils.getFile("classpath:sample/AJson.json"),
Charset.forName("utf-8")),
AClass.class);
ResponseEntity<AClass> responseEntity = new ResponseEntity<>(response,
HttpStatus.ACCEPTED);
Mockito.when(restTemplateB.exchange(Mockito.any(), Mockito.any(HttpMethod.class),
Mockito.any(HttpEntity.class),
Mockito.<ParameterizedTypeReference<AClass>>any()))
.thenReturn(responseEntity);
service.testMethod("abc");
assertNotNull(responseEntity.getBody());
}
Исключение:
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://abc/": Connect to abc:80 [abc/10.25.100.11] failed: Connection refused: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to abc:80 [abc/101.252.110.100] failed: Connection refused: connect