是否可以在不连接数据库的情况下使用DbContext?

时间:2011-11-25 20:43:35

标签: entity-framework unit-testing entity-framework-4.1

我在我的应用程序中使用Entity Framework Code-First,我将对一些服务进行单元测试。我有所有构建的存储库和工作单元模式,我正在试图找出为我的测试伪造这些对象的最佳方法。我当然可以为我的测试创建完全虚假的存储库和工作单元类,但我想避免重新实现我的DbContext的许多功能(例如,管理相关对象,更改跟踪等)。假货。

我真的想要DbContext所做的一切,除了:

  1. 尝试从基础数据存储中检索任何内容。
  2. 尝试向底层数据存储区写入任何内容。
  3. 这可能吗?

2 个答案:

答案 0 :(得分:0)

只要存储库实现适当的接口,您的存储库的伪造就不需要重新实现您的上下文。它们最多只需要包含其关联实体类型的内存列表。或者使用模拟框架(如Moq)来创建虚假实现。

答案 1 :(得分:0)

您可以使用SQL Server Compact Edition数据库进行单元/集成测试。您可以通过数据库初始化程序创建CE数据库。该数据库将具有与您的数据库类似的结构,EF API无需任何修改即可运行。

但是,如果您使用过存储过程或数据库特定的功能,那么您将无法测试这些功能。

相关问题