如何使用PowerMockito模拟这个JSONObject?

如何使用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();

我的任务是为下面这个方法编写一个单元测试。然而,我对整个模拟和/或使用PowerMockito还相当陌生。方法如下:

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处理。谢谢你的帮助。