gpt4 book ai didi

java - 使用 Mockito 验证方法是否确实成功传递并支持异常

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:08 24 4
gpt4 key购买 nike

我有下一个方法来解析 JSON 响应。

public void parseJSON(JSONObject itemObj) {

try {
setId(itemObj.getString("Id"));
setName(itemObj.getString("Name"));
JSONObject extraObj = itemObj.getJSONObject("Items");
ExtraData extra = new ExtraData ();
extra.parseResponse(extraObj);
} catch (JSONException e) {
}

现在,我想为其添加一些单元测试,除了解析问题之外,我不知道您还可以在这里测试什么,所以我准备了一个包含相关字段的测试,我想确保它解析相关字段,以防它无法了解它。我的问题是,因为它是一个模型,所以每个 itemObj.getString(“whatever”) 返回 Null 并且不会抛出异常,所以无论我传递什么,它总是成功。

根据我传递的数据,我如何知道它成功/失败(抛出异常)并且并不总是成功?

@Test
public void parseJSON() throws Exception {
myClass = Mockito.spy(MyClass.class)
JSONObject jsonObject = Mockito.mock(org.json.JSONObject.class);
when(jsonObject.getString(eq("Id"))).thenReturn("555555");
when(jsonObject.getString(eq("Name"))).thenReturn("John");
// if removing the “Name” and leaving only “NameIncorrect” it suppose to fails
//when(jsonObject.getString(eq("NameIncorrect"))).thenReturn("John");

when(jsonObject.getJSONObject(eq("Items"))).thenReturn(Mockito.mock(JSONObject.class));

myClass.parseJSON(jsonObject);
}

最佳答案

测试您的方法的一种方法是:

  1. 使用您要测试的数据创建一个真正的 JSONObject。
  2. 使用真实的 JSONObject 调用被测方法。
  3. 检查对 setId()setName() 等的调用是否符合您预期的数据。您可以通过访问 myClass.getId() 或类似方法来做到这一点?

关于java - 使用 Mockito 验证方法是否确实成功传递并支持异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com