【发布时间】:2016-07-26 16:55:57
【问题描述】:
我有这样的课:
class A {
public static void makeCall() {
URL url = "www.google.com";
InputStream result = url.openStream();
//Do more stuff
}
}
我想为它写一个单元测试。我想要发生的是“拦截”对openStream() 的调用,以便我可以运行静态方法makeCall() 并返回某种硬编码的JSON,而不是实际进行调用。我无法弄清楚如何模拟这个,或者它是否可能。
我正在寻找与 Angular 的 $httpBackend 相同的行为,有什么想法或建议吗?
【问题讨论】:
-
您可能应该将 HTTP 代码与您实际尝试测试的逻辑分开(想想依赖注入)。
-
所以您正在考虑将调用分离为
makeHTTPCall(URL url)之类的内容,然后模拟该方法以返回 JSON?那肯定行得通 -
如果你真的必须模拟它,使用 JMockit 模拟库很简单(声明一个
@Mocked URL url模拟字段,然后在openStream()上记录所需的期望)。
标签: java unit-testing mocking mockito