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

我有一个像这样的课程:

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){

然后在您的模拟考试中通过.

这也为将来提供了更大的灵活性和可能的​​代码重用.

上一篇:Android AsyncTask和Mockito(或PowreMockito)


下一篇:创建一个采用Java参数的模拟对象