如何解决PowerMockito:如何在不获取“输入不能为空”的情况下模拟静态方法调用的非空参数
在我的服务类中,我有一个代码块:
try {
patch = JsonMergePatch.fromJson(jsonNodeToApplyAsPatch);
} catch (Exception e) {
throw new BadRequestException("Failed to process patch values into patch object.",e);
}
这是来自 PATCH 调用处理程序方法中的代码。 JsonMergePatch 是 FGE Json-Patch 库的一部分。对于那些关心我的 gradle 引用的人来说:
compile(group: 'com.github.fge',name: 'json-patch',version: '1.6')
反正好像
JsonMergePatch.fromJson(...)
如果传入的内容为空,则抛出异常。好吧,没那么糟糕。现在,在为此方法设置 PowerMockito 测试时,我尝试了各种方法。一种是:
doReturn(patch).when(JsonMergePatch.fromJson(any(JsonNode.class)));
('patch' 诞生于:
ObjectNode objNode = JsonNodeFactory.instance.objectNode();
JsonMergePatch patch = null;
try {
patch = JsonMergePatch.fromJson(objNode);
} catch (Exception e) {
e.printStackTrace();
}
)
在我的测试中:
doReturn(patch).when(JsonMergePatch.fromJson(any(JsonNode.class)));
我明白了:
java.lang.NullPointerException: input cannot be null
at com.github.fge.msgsimple.bundle.MessageBundle.checkNotNull(MessageBundle.java:251)
at com.github.fge.msgsimple.bundle.MessageBundle.checkNotNull(MessageBundle.java:269)
at com.github.fge.jsonpatch.mergepatch.JsonMergePatch.fromJson(JsonMergePatch.java:78)
at com.company.ServiceTest.testUpdate(ServiceTest.java:166)
...
IntelliJ 通过在“fromJson”之前放置插入符号将我引导至 JsonMergePatch.fromJson。所以看起来:
any(JsonNode.class)
只是不会这样做。当然,我尝试创建一个 JsonNode 并将其用作输入,但这并不能成功覆盖实际的类代码,当然。这只是一种绝望的措施。也尝试了其他几种方法,但都无法解决问题。
有人有想法吗?一如既往地提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。