如何使用PowerMockito模拟这个JSONObject?
我的任务是为下面这个方法编写一个单元测试。然而,我对整个模拟和/或使用PowerMockito还相当陌生。方法如下:如何使用PowerMockito模拟这个JSONObject?,json,unit-testing,junit,mocking,powermockito,Json,Unit Testing,Junit,Mocking,Powermockito,我的任务是为下面这个方法编写一个单元测试。然而,我对整个模拟和/或使用PowerMockito还相当陌生。方法如下: public class Storage { public static JSONObject addHeader(JSONObject input) throws JSONException { try { JSONObject header = new JSONObject();
public class Storage {
public static JSONObject addHeader(JSONObject input) throws JSONException {
try {
JSONObject header = new JSONObject();
header.put("update_date", System.currentTime());
header.put("created_date", System.currentTime());
header.put("type", "storage");
input.put("HEADER", header);
}
catch (JSONException e) {
e.printStackTrace();
}
return input;
}
这就是我被卡住的地方。在我的测试方法中,我有这行代码
JSONObject testInput = Whitebox.invokeMethod(Storage, "addHeader", JSONMockTest());
//testInput is always return null so this is where I'm stuck at and as not sure what to do after this
我想验证返回的JSONMockTest在运行该方法之后是否会包含这些额外的键和值。这可能很简单,但我不知道如何开始
非常感谢您的帮助。只要您的方法不是私有的,就不需要使用
白盒。invokeMethod
。
发件人:
调用静态私有或内部类方法。这可能有助于
测试私有方法
直接调用它即可:
JSONObject resultJsonObject = Storage.addHeader(jsonObject);
现在,您可以断言
resultJsonObject
的值,只要您的方法不是私有的,就不需要使用Whitebox.invokeMethod
。
发件人:
调用静态私有或内部类方法。这可能有助于
测试私有方法
直接调用它即可:
JSONObject resultJsonObject = Storage.addHeader(jsonObject);
现在您可以断言
resultJsonObject
什么是JSONMockTest
?您应该将JSONObject
作为方法参数传递。什么是JSONMockTest
?您应该将JSONObject
作为方法参数传递。我还发现这个值总是返回null的原因是因为我对整个类进行了mockStatic处理。谢谢你的帮助。原来我不需要像上面建议的那样使用Whitebox.invokeMethod。我还发现这个值总是返回null的原因是因为我对整个类进行了mockStatic处理。谢谢你的帮助。