我已经看到了多个关于“如何存根您的课程,以便您可以控制 SUT 中发生的事情”的答案。
他们说一件事:
创建一个接口并使用依赖注入注入该接口,并使用您随后注入 SUT 的相同接口创建一个存根。
但是,我在以前的工作场所学到的东西:
如果您进行单元测试,您将测试所有类/功能。
这是否意味着对于每个具有特定功能布局的类,您必须创建一个接口?
这意味着类/文件的数量大约是原来的两倍。
如下例所示,这是“要走的路”还是我在单元测试过程中遗漏了什么?
注意:我使用的是 VS2012 Express。这意味着没有“Faker”框架。我正在使用“标准”VS2012 单元测试框架。
作为一个非常非常简单的示例,它允许我对传递给 SUT 的每个接口进行存根。
IFoo.cs
public interface IFoo
{
string GetName();
}
Foo.cs
public class Foo : IFoo
{
public string GetName()
{
return "logic goes here";
}
}
IBar.cs:
public interface IBar : IFoo
{
IFoo GetFoo();
}
酒吧.cs:
public class Bar : IBar
{
public string GetName()
{
return "logic goes here";
}
public IFoo GetFoo()
{
return null; // some instance of IFoo
}
}
IBaz.cs:
public interface IBaz
{
IBar GetBar();
}
Baz.cs:
public class Baz
{
public IBar GetBar()
{
return null; // some instance of IBar
}
}