java - 如何模拟 ResponseEntity

标签 java unit-testing junit mockito

请找到下面提到的代码: 我需要帮助为 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/

相关文章:

java - 在调用验证方法后更改值属性时,ArgumentCaptor.getValue() 上的 assertThat 误报

java - org.apache.commons.beanutils.MethodUtils.invokeMethod 给出 java.lang.NullPointerException

java - 混合容器/客户端模式下的 Arquillian 和 Selenium

java - 为什么 Date 类对象打印今天的日期而不是 Date 类的引用

java - 通过JSP连接MySQL

gwt - 使用 GIN 注入(inject)的 JUnit 测试,没有 GWTTestCase 和重载 gin 模块?

java - 如何将 Or 与 JUnit 假设一起使用

java - 如何在 Android Studio 中从 ApplicationTest.java 编辑 MainActivity 的 EditText 字段?

.net - MS 研究国际象棋的替代方案?

asp.net-mvc - 单元测试: Creating a 'mock' request to simulate a MVC page request