我已经看到了关于’如何存根你的课程以便你可以控制SUT内发生的事情’的多个答案.
他们说一件事:
Create an interface and inject that interface using dependency injection and create a stub using that same interface that you then inject into the SUT.
但是,我在以前的工作场所学到了什么:
If you unit test,you test all classes/functionality.
这是否意味着对于每个具有特定功能布局的类,您必须创建一个接口?
如下面的例子所示,这是“走的路”还是我在单元测试过程中遗漏了什么?
作为一个说明:
我正在使用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(); }Bar.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 } }