通常,存储库是数据访问代码之上的抽象。您可能有多个 IRepository 接口实现,一个使用 LINQ to SQL 作为数据访问技术,另一个使用 Raw ADO.NET 或另一个使用 XML 文件作为数据存储。使用此存储库抽象,您访问数据的前端代码(例如repository.GetCustomer(someId)
:)保持不变。我们可以根据需要简单地切换实现。
有了这个抽象,你就可以为你的代码编写单元测试。您只需要创建 IRepository 的模拟实现。您可以使用 Moq 等模拟库来实现此目的。
使用 Moq 的单元测试代码的快速示例
var repo= new Mock<IRepository>();
var dummyCustomer = new Customer { Name ="Test"}
repo.Setup(s=>s.GetCustomer(It.IsAny<int>).Returns();
var customerMgr = new CustomerManager(repo.Object);
var actualResult = customerMgr.GetCustomer(345);
//Assert something now.
在这里,当您运行单元测试时,它不会命中数据库,而是会返回dummyCustomer