2011-11-25 63 views
0

我在我的应用程序中使用实体框架Code-First,我将单元测试一些服务。我建立了Repository和Unit of Work模式,并且试图找出为我的测试伪造这些对象的最佳方法。我当然可以为我的测试创建完全虚假的Repository和Unit of Work类,但是我想避免重新实现DbContext的许多功能(例如,管理相关对象,更改跟踪等)假货。是否可以在不连接数据库的情况下使用DbContext?

我真的希望这样的DbContext做除了一切:

  1. 试图检索从底层数据存储任何东西。
  2. 试图向底层数据存储区写入任何内容。

这可能吗?

回答

0

只要他们正在实施适当的接口,你的仓库的价值应该不需要任何重新实现你的上下文。最多他们只需要包含一个关联实体类型的内存列表。或者,使用模拟框架(如Moq)来创建假实现。

0

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

但是,如果您已使用存储过程或数据库特定功能,那么您运气不好测试这些功能。

相关问题