如何模拟构造函数的静态公共类引发异常

时间:2019-05-08 22:26:15

标签: java mockito

我正在学习模拟和功率模拟,如果这个问题很愚蠢,请原谅我。

我正在尝试模拟以下行以引发一些异常:

new ResultJSONWrapper.Success(null).toJSON();

我认为我需要一些如何模拟成功类的构造函数以引发JSONException的方法,但是找不到任何可靠的解决方案。 可以给我一些提示吗?

public abstract class ResultJSONWrapper {
    private String json;
    public String toJSON() {
        return json;
    }

    static public class Success extends ResultJSONWrapper {
        public Success(Object result) throws JSONException {
            JSONWriter writer = new JSONStringer();
            writer.object();
            writer.key("status");
            writer.value(HTTP_OK);
            writer.key("data");
            writer.value(result);
            writer.endObject();
            super.json = writer.toString();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Mockito不允许您模拟构造函数,而Power Mockito是您最后要使用的东西。

由于ResultJSONWrapperabstract类,因此您可以创建自己的TestResultJSONWrapper实现,该实现将在创建过程中抛出JSONException,并将其传递给您的代码部分正在测试

public class TestSuccessMock extends ResultJSONWrapper {
    public TestSuccessMock (Object result) throws JSONException {
        throw new JSONException();
    }
}

所以基本上我的建议是不要为此目的使用Mockito