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