【发布时间】:2022-01-19 07:49:46
【问题描述】:
我已经为使用 rest 模板调用另一个服务但模拟抛出 URI 不是绝对错误的方法编写了以下 Junit。
方法:
@Value("${app.prop.esso-url}")
private String essoUrl;
public ResponseEntity<String> essoCall(String token) {
ResponseEntity<String> response=null;
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
headers.setBearerAuth(token);
HttpEntity<String> entity = new HttpEntity<>(headers);
response= restTemplate.exchange(essoUrl, HttpMethod.GET, entity,String.class);
logger.info("successfully received response.");
return response;
}
Junit:
@Autowired
private ObjectMapper objectMapper;
@InjectMocks
SecurityMsServiceImpl securityservice=new SecurityMsServiceImpl();
@Value("${app.prop.esso-url}")
private String essoUrl;
@Mock
private RestTemplate restTemplate;
@Test
void givenMockingIsDoneByMockito_whenGetIsCalled_shouldReturnMockedObject() {
ResponseEntity<String> responseEntity = new ResponseEntity<String>("success", HttpStatus.OK);
Mockito
.when(restTemplate.getForEntity(essoUrl
, String.class))
.thenReturn(responseEntity);
ResponseEntity<String> finalresponse=securityservice.essoCall("abc");
assertEquals(responseEntity, finalresponse);
}
【问题讨论】:
标签: spring-boot junit mocking mockito resttemplate