Я не могу высмеивать данные извлечения из githubapi
, чтобы получить данные, я использую Resttemplate Exchange < /p>
вместо Принимая данные из GitHub, я хочу высмеивать свой собственный < /p>
Код: Выделить всё
Expected :1
Actual :11
< /code>
Fetch Logic: < /p>
@Component
@Setter
public class GitHubApi {
public List getUserRepos(String user) {
restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
addHeaders(headers);
entity = new HttpEntity(headers);
ResponseEntity response = restTemplate.exchange(
GITHUB_API_URL + "/users/" + user + "/repos",
HttpMethod.GET, entity,
new ParameterizedTypeReference() {
});
return response.getBody();
}
}
< /code>
логика теста: < /p>
@Mock
private RestTemplate restTemplate;
@InjectMocks
private GitHubApi gitHubApi;
@Test
public void getUserRepos_ShouldReturnRepositories() {
String username = "user";
GitHubRepository mockedRepository = GitHubRepository.builder()
.id(1L)
.name("repo1")
.fullName("user/repo1")
.build();
List expected = List.of(mockedRepository);
ResponseEntity mockResponse = new ResponseEntity(expected, HttpStatus.OK);
HttpHeaders headers = new HttpHeaders();
addHeaders(headers);
when(restTemplate.exchange(
eq(GITHUB_API_URL + "/users/" + username + "/repos"),
eq(HttpMethod.GET),
any(HttpEntity.class),
eq(new ParameterizedTypeReference() {})
)).thenReturn(mockResponse);
List repositories = gitHubApi.getUserRepos(username);
assertNotNull(repositories);
assertEquals(1, repositories.size());
assertEquals("repo1", repositories.getFirst().getName());
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... sttemplate