我一直在观看各种视频并阅读各种关于对存储库进行单元测试的博客。
最常见的模式是创建一个 Fake 存储库,该存储库实现与真实存储库相同的接口。然后假的使用内部字典或其他东西。
所以实际上你是在对永远不会投入生产的 fakerepository 的逻辑进行单元测试。
现在您可以使用依赖注入通过使用一些 IDBContext 接口来注入模拟 DBContext。但是,您只是在测试实际上只是转发到 dbcontext (被模拟)的每个存储库方法。
因此,除非每个存储库方法在调用 dbcontext 之前都有很多逻辑,否则它似乎有点毫无意义?
我认为将存储库上的测试作为集成测试并实际让它们访问数据库会更好吗?
新的 EF 4.1 使这变得简单,因为它可以根据测试项目中的连接字符串动态创建数据库,然后您可以在运行测试后使用 dbcontext.Database 方法将其删除。