如何“拦截”方法调用测试?

时间:2016-07-26 16:55:58

标签: java unit-testing mocking mockito

我有一个类似的课程:

.data("my-property", "value")

我想为它编写一个单元测试。我想要发生的是“拦截”对[data-my-property=value]的调用,以便我可以运行静态方法class A { public static void makeCall() { URL url = "www.google.com"; InputStream result = url.openStream(); //Do more stuff } } 并返回某种硬编码的JSON,而不是实际进行调用。我无法弄清楚如何模拟它,或者甚至可能。

我正在寻找与Angular的openStream()相同的行为,任何想法或建议?

1 个答案:

答案 0 :(得分:3)

您不需要模拟方法成员变量。为了更好的设计,使url成为方法中的参数。

public static void makeCall(URL url){

然后在你的测试传递中进行模拟。

这也可以在将来提供更大的灵活性和可能的​​代码重用。