java如何在JUNIT/Mockito中验证以下情况
public void doFoo(int x, int y, String url) {
JSONObject json = new JSONObject().put("z", x + y);
try (final HttpUtility httpUtils = new HttpUtility()) {
httpUtils.doAuthPutJson(url,json);
}
}
我想验证httputity的输入。我该如何为此编写单元测试
# 1 楼答案
实际上,当前类和
HttpUtility
在方法中是强耦合的如果您认为^ {CD1}}是您想模仿的依赖项,则必须以允许设置依赖性的方式使用它。br/>
但实际上,您无法在当前类中自然设置
HttpUtility
依赖项,因此您认为PowerMockito将解决您的问题但事实上不会
它只会隐藏设计问题
只需做一些小的更改,就可以以自然、直接的方式进行更清晰的设计和模拟
HTTPUtlity
实例化为了实现它,我将把
HttpUtility
实例化提取为依赖项执行的处理我可以得到这样的代码:
注意,我使用构造函数来设置依赖项,因为它允许设置一个关于它的不变量,但如果需要,也可以使用setter
现在,您可以轻松检查
HttpUtility.doAuthPutJson()
是否使用测试中的预期参数调用: