O.O*_*O.O 2 c# tdd unit-testing
做TDD并希望隔离测试中的方法:Direct();
但是,当测试创建时MyClass,会SomeClass.SetupStuff();爆炸(NotImplementedException).因此,修改IMyClass接口有一个Configure();可以在MyClass构造后调用的方法来避免异常.
问题:这是一种处理这种情况的可接受的方式,还是有一些基本的OOP主体,这打破了?
public class MyClass : IMyClass
{
public MyClass()
{
// class with static method that sets stuff up
SomeClass.SetupStuff();
}
public void IMyClass.Direct()
{
// want to test this
}
}
Run Code Online (Sandbox Code Playgroud)
VS
public class MyClass : IMyClass
{
public MyClass()
{
}
public void IMyClass.Direct()
{
// want to test this
}
//
public void IMyClass.Configure()
{
// class with static method that sets stuff up
SomeClass.SetupStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
避免此类问题的一种方法是使用依赖注入
public class MyClass : IMyClass
{
public MyClass(ISomeClass someClass)
{
someClass.SetupStuff();
}
public void IMyClass.Direct()
{
// want to test this
}
}
Run Code Online (Sandbox Code Playgroud)
通过将类与SomeClass分离,您可以在测试期间自由地提供ISomeClass的模拟实现,并且可以在运行时提供完整的实现.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |