【发布时间】:2019-07-27 18:02:06
【问题描述】:
我想在 Spring Boot 中模拟 RestTemplate,我在方法中进行 REST 调用。为了测试我正在创建的微服务的控制器,
我想在我的微服务控制器中测试方法。
例如:
@GetMapping(value = "/getMasterDataView", produces = { MediaType.APPLICATION_JSON_VALUE })
@CrossOrigin(origins = { "http://192.1**********" }, maxAge = 3000)
public ResponseEntity<MasterDataViewDTO> getMasterDataView() throws IOException {
final String uri = "http://localhost:8089/*********";
RestTemplate restTemplate = new RestTemplate();
MasterDataViewDTO masterDataViewDTO = restTemplate.getForObject(uri, MasterDataViewDTO.class);
return new ResponseEntity<>(masterDataViewDTO, HttpStatus.OK);
}
如何使用模拟来测试这个?
这是我目前所拥有的:
@Test
public void testgetMasterDataView() throws IOException {
MasterDataViewDTO masterDataViewDTO= mock(MasterDataViewDTO.class);
//String uri = "http://localhost:8089/*********";
Mockito.when(restTemplate.getForObject(Mockito.anyString(),ArgumentMatchers.any(Class.class))).thenReturn(masterDataViewDTO);
assertEquals("OK",inquiryController.getMasterDataView().getStatusCode());
}
我在运行模拟时遇到错误,方法 getMasterDataView() 被调用,其中的 REST 调用也被调用并引发错误。如何编写测试以便不调用 REST 端点?如果可能的话,我想用 Mockito 来做这个。
【问题讨论】:
-
是否有可能使用 mockito 来做到这一点。建议我们在项目中使用 mockito 进行测试
标签: spring rest spring-boot junit mockito