我正在研究TDD,并且遇到了可以使用一些帮助的场景。TDD在内部构造函数中注入Mocked Repository(UnitOfWork)
我的项目使用MVC3,并被构建为具有BAL和DAL层。每个图层都在其自己的项目中。 BAL通过Repository Pattern访问数据库。由于我使用的是EntityFramework,我还实现了UnitOfWork模式。以下是在BAL服务类的样子:
public class ExampleService
{
private UnitOfWork unitOfWork;
private bool isProcessing = false;
internal ExampleService(UnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public void ExposedMethod()
{
//do stuff with the unitOfWork
}
}
问:我想这个创建单元测试(显然我应该写代码之前测试)。但是,如果我按原样运行代码,测试将是一次集成测试,因为它将使用UnitOfWork并连接到我的数据库。我可以模拟一个新的可以访问内存中的虚拟数据的UnitOfWork,但我不知道如何注入它,因为构造函数是内部的。我宁愿不写出驻留在每个项目中的单元测试。
有什么想法?
[InternalsVisibleTo]将按原样解决我的问题。我可能仍然缺少DI的一些东西,但是我展示的示例类是在BAL中,UnitOfWork在DAL中。我有内部标记的构造函数,因为我有另一个类来控制对示例类的访问。我将不得不考虑这一点。谢谢! – AFrieze