【发布时间】:2020-02-27 11:24:01
【问题描述】:
我正在做非常简单的事情,但面临一些问题。 所以写了一个非常简单的方法,它采用一个 JsonObject 并根据密钥提取 JsonArry。 它工作正常,但是当我尝试编写单元测试时遇到问题。 所以以下是需要测试的方法。
public String getA(JSONObject jsonObject) {
JSONArray educationsArray = jsonService.getJsonArray(jsonObject, "a");
}
public String getB(JSONObject jsonObject) {
JSONArray educationsArray = jsonService.getJsonArray(jsonObject, "b");
}
这是我正在尝试编写的单元测试。
String json = fileUtil.readFile("data.json");
String content = (String) new JSONObject(json).get("data");
JSONObject contentJson = new JSONObject(content);
when(jsonLinkExtractorService.getJsonArray(contentJson, "a")).thenReturn(jsonArray);
它读取数据的 json 文件,提取元素的数据类型,再次 json 有效负载,然后最后用提取的字符串创建新的 JSONObject。完成所有这些之后,对新创建的 json 对象进行了简单的模拟并传递了密钥。
不是在实际调用方法时返回 null。可能的原因是对象 JsonObject 与 Mockito 不同,这就是为什么无法匹配。 当我将这两个参数更改为 any(), any() 然后它可以找到但它没有按键过滤。 所以有人可以帮助我吗? Mockito 可以匹配两个新创建的对象,或者我可以像下面的语句一样模拟。
any(), "a"
我试过了,但它抛出了异常。 有人可以帮我解决这个问题。
谢谢
【问题讨论】: