在 Entity Framework Core 3.1 中创建一个关于 DBContext 的接口的良好实践吗? Microsoft 有关于此的任何文档吗?
我们知道在单元测试中模拟 DBContext 是不好的做法,但是如何在它上面创建一个接口?
https://docs.microsoft.com/en-us/ef/core/testing/
<块引用>"但是,我们从不尝试模拟 DbContext 或 IQueryable。这样做是 困难、繁琐和脆弱。不要这样做。”
答案 0 :(得分:0)
如果您的目标是促进与 DbContext 交互的单元测试代码,那么我建议您将存储库模式与工作单元一起实现,以管理 DbContext 生命周期范围和提交。我已经在各种答案中概述了实现灵活且易于测试的存储库类的有效方法,但这个可能总结得最好:(How to set multiple services from Entity Framework Core on Repository Pattern?)
我建议避免通用存储库实现,并利用 EF 的 IQueryable
支持的强大功能来构建一个极其简单的模拟层,以提供高效灵活的查询。
最后一个细节是,如果您确实希望通过存储库支持 async
查询并希望对其进行单元测试,可以在此处找到支持此功能的宝贵提示:(Unit-testing .ToListAsync() using an in-memory)