java - 模拟java异常
问题描述
我有这个 catch 语句:
catch (NotFoundException ex) {
ex.getError().setTitle(NOT_FOUND);
throw new NotFoundException(resource, id, ex.getError());
}
我怎样才能模拟这个异常?我试过这个
when(service
.filter(eq(any()), eq(any()), eq(any())))
.thenThrow(new NotFoundException(anyString(), anyString()));`
但由于这一行,它给了我一个空异常错误:
ex.getError().setTitle(NOT_FOUND);
构造函数是:
public NotFoundException(String resource, String id, Error error) {
this.resource = resource;
this.ids = Collections.singletonList(id);
this.error = error;
}
而且我无法获取异常变量来设置标题,也无法找到模拟它的方法。
谢谢你的帮助!
解决方案
.thenThrow(new NotFoundException(anyString(), anyString()));
这是不允许anyString()
的:只代表直接调用when
and verify
。在您对过滤器的调用中,只需使用any()
而不是eq(any())
,但您在正确的位置使用匹配器。
此外,看起来您的被测系统假定它ex.getError()
是非空的;您可能需要将有用的 Error 实例作为构造函数参数传递到您创建的 NotFoundException 中。
.thenThrow(new NotFoundException("foo", "bar", new Error(/* ... */)))
当然,如果您的 Error 难以创建或使用,您可以使用 amock(Error.class)
来代替。
推荐阅读
- python - Python程序仅获取列表中没有重复的唯一
- swift - 如何在整个屏幕上滚动表格视图
- r - 在 DF 中查找 Avg、Max、Min 的命令
- azure - Azure Functions .NetCore 3.0 Request.Query 抛出“找不到入口点”错误
- python - 使用决策树分类器时的值错误
- java - 使用 Mockito 从 List 创建 Json 时如何抛出 JsonProcessingException?
- python - 查找唯一编号的代码缓慢且效率低下?
- netlogo - Netlogo:时间扩展的内部错误
- scala - 有没有办法在使用 IntelliJ + Bazel + Scala 时浏览库资源?
- python - 如何获取列表([a,2],[a,1],[a,3])的最高数字([a,3])