有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Spring MVC中的java模拟第三方API调用

所以目前的情况就是这样。我已经开发了一个应用程序,并在控制器上运行了一些测试。然而,测试击中了实际的第三方API,然后jackson对结果进行绑定以映射到POJO对象

我有点不确定如何在没有我手动完成POJO的情况下嘲笑整件事。我正在寻找一种可以接收模拟json响应并将其绑定到POJO的东西,我可以验证它是否匹配模拟json上的数据

下面是我的第三部分调用API的示例

/**
 * Makes the API call and stores result in POJO
 * It should also gracefully handle any errors
 * @return
 */
public 3rdPartySearchResult searchAPICall(){
    if(productQuery==null||productQuery.isEmpty() || productQuery.trim().isEmpty()){
        throw new NullPointerException("Query string cannot be empty");
    }
    RestTemplate restTemplate = new RestTemplate();
    WalmartSearchResult wsr = restTemplate.getForObject(3rdPartyAPIDetails.searchUrl, 3rdPartyPOJO.class,3rdPartyAPIDetails.APIKey,productQuery);
    return wsr;
}

我不知何故需要模仿我的模板。getForObject指向模拟json文件


共 (1) 个答案

  1. # 1 楼答案

    下面的示例测试显示了一种方法,即使用JMockit mocking库:

    @Test
    public void exampleTestForSearchAPICall(@Mocked RestTemplate rest) {
        SearchAPI searchAPI = new SearchAPI(...productQuery...);
    
        3rdPartySearchResult result = searchAPI.searchAPICall();
    
        assertNotNull(result);
    
        // Verify the expected call to RestTemplate:
        new Verifications() {{ rest.getForObject(...argument values and/or matchers...); }};
    }