编写测试用例时将Json响应转换为java对象时出错
我正在使用api并使用Gson将Json响应转换为java对象。代码运行良好,我得到了所需的结果,但是当我编写测试用例时,我得到了一个ClassCastException
接听电话:
String jsonResponse = getData(parameter1,parameter2);//api call
if(!StringUtils.equalsIgnoreCase(jsonResponse, "null"))
{`JSONObject jsonObject = new JSONObject(jsonResponse);`
Gson gson = new Gson();
somejavaObject = gson.fromJson((String) jsonObject.get("data"),
javaObject.class);
}
电话留言:
ObjectMapper mapper = new ObjectMapper();
String objectString = mapper.writeValueAsString(object);
JSONObject request = new JSONObject();
request.put("data", objectString);
request.put("otherData", someValue);
//then POST call
GET调用的测试用例:
String json = "{\"data\": {\"value1\": {\"v1\": 123, \"v2\": 456}, \"list\": [{\"l1\": 123, \"l2\" :456}]}}";
PowerMockito.doReturn(json).when(spy,"getData",parameters);
上面的代码适用于api,但在上面一行测试用例失败并引发错误:
java.lang.ClassCastException: org.json.JSONObject cannot be cast to java.lang.String
# 1 楼答案
我找到了解决办法。 问题是我选错了类型
我把上面的线改成了
它现在起作用了
# 2 楼答案
你能试试这个解决方案吗
更新答案
试着用这个