繁体   English   中英

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

[英]How can I “intercept” a method call for a test?

我有一个这样的课:

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

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

这也允许将来更灵活和可能的代码重用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM