在Spring MVC中模拟第三方API调用



所以目前的情况是这样的。我已经构建了一个应用程序,并在控制器上运行了一些测试。但是,测试命中了实际的第三方API,然后杰克逊对结果进行绑定以映射到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;
}

i我以某种方式需要模拟 restTemplate.getForObject 来指向模拟 json 文件。

以下示例测试显示了一种方法,即使用 JMockit 模拟库:

@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...); }};
}

相关内容

  • 没有找到相关文章

最新更新