Я пытаюсь смоделировать внешний API restClient, но он вызывает фактический API вместо того, чтобы насмехаться над ним. Пожалуйста, помогите, поскольку я не уверен, где я иду не так.
Я пытался высмеивать вызов и еще несколько других вещей, но это не сработало.
public class TestService
{
private static final String EXTERNAL_API = "http://LinktoExternalAPI/";
@Autowired
RestTemplate restTemplate;
public Map<String, String> countryCodes()
{
Map<String, String> map = new TreeMap<>();
try
{
ResponseEntity<testCountry[]> responseEntity = restTemplate
.getForEntity(EXTERNAL_API
, testCountry[].class);
List<testCountry> testCountryList = Arrays.asList(responseEntity.getBody());
map = testCountryList.stream()
.collect(Collectors.toMap(testCountry::getCode, testCountry::getName));
}
catch (HttpClientErrorException | HttpServerErrorException httpClientOrServerExc)
{
}
return map;
}
}
Тестовый пример для этогониже:
@RunWith(PowerMockRunner.class)
public class TestServiceTest
{
@InjectMocks
TestService testService;
@Mock
RestTemplate restTemplate;
private static final String EXTERNAL_API = "http://LinktoExternalAPI/";
@Test
public void testCountryCodes(){
TestCountry testCountry = new TestCountry();
testCountry.setCode("JPN");
testCountry.setName("Japan");
List<testCountry> testCountryList = new ArrayList<testCountry>();
testCountryList.add(testCountry);
Mockito.when(restTemplate.getForEntity(EXTERNAL_API, testCountry[].class)).thenReturn(new ResponseEntity(testCountryList, HttpStatus.OK));
Map<String, String> result = testService.countryCodes();
// result is pulling the actual size of the api instead of mocking and sending me testCountryList size.
<Will mention assertion here>
}
В результате вы получаете фактический размер API вместо насмешки и отправляете мне testCountryList
размер.