请找到下面提到的代码:
我需要帮助为 ResponseEntity
编写 Mockito
条件:
if(isObjectPresent(ePartnerRestRequestDTO))
{
ePartnerRestRequestDTO.setLoggerId(loggerId);
String url = new StringBuilder(EPARTNER_MICRO_SERVICE_URL).append(service).toString();
RequestEntity<String> requestEntity = new RequestEntity<String>(prePreocess(ePartnerRestRequestDTO), HttpMethod.POST, new URI(url));
Instant before = Instant.now();
ResponseEntity<String> response = new RestTemplate().exchange(requestEntity, String.class);
logger.info("ePartner service " + url + " - duration (milliseconds) :: " + Duration.between(before, Instant.now()).toMillis());
if(isObjectPresent(response) && isObjectPresent(response.getStatusCode()) && HttpStatus.OK == response.getStatusCode()) {
ePartnerRestResponseDTO = postProcess(JWSResponseUtil.verifyJWSSignatureAndExtractPayload(response.getBody()));
if(isObjectPresent(ePartnerRestResponseDTO) && isValuePresent(ePartnerRestResponseDTO.getResponseCode())) {
if(SUCCESS_CODE.equals(ePartnerRestResponseDTO.getResponseCode())) {
status = true;
}
}
}
}
最佳答案
您无法使用普通 Mockito 模拟 NEW 对象的创建。
1) 我建议将对象的创建转移到包级别方法:
RequestEntity<String> getRequestEntity(/* params */){
return new RequestEntity<String>(prePreocess(ePartnerRestRequestDTO),
HttpMethod.POST, new URI(url))
}
2) 然后监视被测试的类
@Spy
private ClassUnderTest classUnderTestSpy;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
doReturn(myPreparedRequestEntity).when(classUnderTestSpy).getRequestEntity(/* params*/);
}
关于java - 如何模拟 ResponseEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817110/