因此,您在 C# 中有一个使用存储库模式的 DAL,并且每个存储库都有一个接口。它由 ADO.NET、MS SQL Server 和存储过程调用提供支持。
这非常适合在进行单元测试时在其他地方使用它的地方存根/模拟存储库,我喜欢它!
但是,我很想为 DAL 本身添加一些单元测试。最好使用带有 NUnit 的 Rhino Mocks。但是,如果可以证明它可以做一些 Rhino 在这个问题上不能做的事情,我愿意切换到 MoQ。
我宁愿在单元测试期间不让它与任何数据库对话,以保持它们更“纯”,同时仍然有效地测试 DAL 本身。但是,如果您不能真正有效地对 DAL 本身进行单元测试而不与数据库通信,那么在内存替换或基于可移植文件的替换中的替代方案是什么,这些替换与 SQL Server 以及相同的 SqlConnection 和 SqlCommand 调用兼容。
如果需要,可以重构 DAL 以使其更容易注入,只要它不会同时使设计过于复杂。已经在使用 Microsoft Unity,用于具有存储库模式的 DI。