Spring Mockito kann RastTemplate nicht verspotten
Posted: 12 Feb 2025, 04:42
hi! Daten von GitHub nehmen Ich möchte über meine eigenen < /p>
verspotten
Ich versuche EQ zu entfernen und versuchte, Httpentity anstelle von irgendeinem hinzuzufügen.>
verspotten
Code: Select all
Expected :1
Actual :11
< /code>
Logik abrufen: < /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>
Testlogik: < /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());
}
}