我在为我的一种方法编写单元测试时遇到了问题。它调用来自不同类的方法并使其变得更糟,它根据服务器连接进行一些处理,所以我需要以某种方式模拟它,但是我无法找到答案如何做到这一点。我还想指出,测试方法不会将这个不同的类对象作为参数,而是在其自身内实例化,所以看起来像这样:
public class Class1 {
public MyEnum method1(String myString){
Class2 class2 = new Class2();
return class2.method2(myString);
}
}
public class Class2 {
public MyEnum method2(String myString){
//returns some value after communication with a server
}
}
所以基本上我需要模拟method2返回值,但是因为它的类在method1中被实例化,所以我看不到这样做的方法。没有实际的服务器连接,有没有办法测试?
答案 0 :(得分:1)
根据经验,你的单元测试应该只测试一个课程,其他一切都应该被嘲笑
作为良好设计的规则,所有依赖项都应该是可注入的,即您的Class2不应该在Class1中实例化(并且绝对不在此类中的方法内部,因为每次调用该方法时它都会创建一个新实例)。
如果上述任何规则被破坏,您应该考虑重写代码。