我已将对象创建封装到https://code.google.com/p/mockito/wiki/MockingObjectCreation中指定的新方法[模式1:使用单行方法创建对象]
我在makeFoo方法之前使用过 private 。这使我的工作更加努力。
makeFoo方法不是私有的吗? 如果是这样,人们如何处理它?</ p>
答案 0 :(得分:1)
如果你制作方法protected
,你可以在你的SUT的测试双重中覆盖它。这样你就可以让方法返回一些mock,spy或其他类型的test double。
但是,如果可能的话,我建议你在构造函数中注入依赖项类。它可以为您节省一些头痛和锅炉板代码。有些情况下,受保护的工厂方法是一个“更好”的解决方案,但需要记住一些事项。
编辑:构造函数注入的示例:
从这里开始
public class MyClass
{
private SomeDependency someDependency;
public MyClass()
{
this.someDependency = new SomeDependency(new A(), new B());
}
public void doWork()
{
_someDependency.doSomething();
}
}
到此
public class MyClass
{
private SomeDependency someDependency;
public MyClass(SomeDependency someDependency)
{
this.someDependency = someDependency;
}
public void doWork()
{
this.someDependency.doSomething();
}
}
这允许您直接为您的类注入test double,而不是继承它并覆盖某些工厂方法。