如何为 RestTemplate 交换方法编写 JUnit 测试
How to write JUnit test for RestTemplate exchange method
如何为以下 class 编写 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;
}
请帮忙
这里有一个简单的例子来测试你提供的代码。
这是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);
}
如何为以下 class 编写 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;
}
请帮忙
这里有一个简单的例子来测试你提供的代码。 这是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);
}