java - 如何模拟构造函数一个静态公共类以引发异常
问题描述
我正在学习 mockito 和 power 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();
}
}
}
解决方案
Mockito 不允许您模拟构造函数,Power Mockito 是您应该使用的最后一件事。
由于ResultJSONWrapper
是一个abstract
类,您可以只创建将在创建期间TestResultJSONWrapper
抛出的实现,并将JSONException
传递到您正在测试的代码部分
public class TestSuccessMock extends ResultJSONWrapper {
public TestSuccessMock (Object result) throws JSONException {
throw new JSONException();
}
}
所以基本上我的建议是不要为此目的使用 Mockito
推荐阅读
- r - 以长数据格式创建聚合变量
- tarsosdsp - 执行 FFT.forwardTransform() 时单击声音
- jquery - 吐司可见但不应该?
- javascript - 我如何才能简单地解决对象中对象中缺少的 JS 属性?
- php - PHP-LARAVEL 6 创建的类别返回 404
- google-apps-script - 如何使用谷歌分析跟踪谷歌表格中的行值发送的电子邮件?
- python - 子列表的唯一元素取决于子列表中的特定值
- environment-variables - Bazel - 如何从环境文件中读取字符串?
- javascript - Service Worker 未收到推送消息
- c# - C# 将对象解析为 Google BigQuery 行