Как написать тест JUnit для метода обмена RestTemplate
Как написать тест Mockito JUnit для следующего класса? Вот мой код:
/**
* baseUrl
*/
@Value("${base.url}")
private String baseUrl;
/**
* Client Method to get room by id
*
* @param id
* @return roomModel
*/
public RoomModel getRoomByIdClient(int id) {
HttpHeaders headers = new HttpHeaders();
HttpEntity<String> requestEntity = new HttpEntity<String>(headers);
ResponseEntity<RoomModel> responseEntity = restTemplate.exchange(baseUrl+"/room/{id}",
HttpMethod.GET, requestEntity, RoomModel.class, id);
RoomModel roomModel = responseEntity.getBody();
return roomModel;
}
Пожалуйста помоги
1 ответ
Решение
Вот простой пример того, как протестировать предоставленный вами код. Это junit 5. Необходимо настроить, если вы используете junit 4.
@Mock
RestTemplate restTemplate;
@InjectMocks
YourClass testedClass;
@BeforeEach
void setUp() {
MockitoAnnotations.initMocks(this);
ReflectionTestUtils.setField(testedClass, "baseUrl", "https://baseURL.com");
}
@Test
void testRestTemplate() {
RoomModel roomModel = new RoomModel();
Mockito
.when(restTemplate.exchange(
ArgumentMatchers.eq("https://baseURL.com/room/{id}"),
ArgumentMatchers.eq(HttpMethod.GET),
ArgumentMatchers.any(HttpEntity.class),
ArgumentMatchers.eq(RoomModel.class),
ArgumentMatchers.eq(1)
))
.thenReturn(new ResponseEntity<RoomModel>(roomModel, HttpStatus.OK));
RoomModel returnedModel = testedClass.getRoomByIdClient(1);
Assertions.assertEquals(roomModel, returnedModel);
}