我有一个像这样的课程:
class A {
public static void makeCall() {
URL url = "www.google.com";
InputStream result = url.openStream();
//Do more stuff
}
}
我想为此编写一个单元测试.我想发生的事情是某种“拦截”对openStream()的调用,以便我可以运行静态方法makeCall()并仅返回某种硬编码的JSON,而不是实际进行调用.我还无法弄清楚如何进行模拟,甚至不可能.
我正在寻找与Angular的$httpBackend相同的行为,有什么想法或建议吗?
解决方法:
您不需要模拟方法成员变量.为了更好的设计,请在方法中将url作为参数.
public static void makeCall(URL url){
然后在您的模拟考试中通过.
这也为将来提供了更大的灵活性和可能的代码重用.