【问题标题】:Mock 3rd Party API calls in Spring MVC在 Spring MVC 中模拟第 3 方 API 调用
【发布时间】:2016-06-07 06:21:40
【问题描述】:

所以现在的情况是这样的。我已经构建了一个应用程序并在控制器上运行了一些测试。然而,测试命中了实际的 3rd 方 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;
}

我需要模拟 restTemplate.getForObject 以指向模拟 json 文件。

【问题讨论】:

标签: java spring-mvc junit jackson mockito


【解决方案1】:

以下示例测试显示了一种使用 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...); }};
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多