1

我已经阅读了很多关于单元测试实体框架的内容。

我发布这个问题是因为我只是看到这个问题有太多的解决方案!

以下是我找到的解决方案:

  1. 使用名为TypeMock的昂贵的商业工具(此处提到)。
  2. 使用名为Effort的 alpha 开源工具(此处提到)。
  3. 使用Repository PatternRhino Mock。针对真实数据库(提到这里)测试隔离的 LINQ 查询。

此处所述的某些方法存在一些问题:

  • 您无法绕过需要为ObjectContext提供连接字符串的事实
  • 如果你伪造了ObjectContext - 一些可能在单元测试中起作用的东西在生产中不起作用(比如在查询中运行函数)

我读到的一些文章是 3-4 年前的。

这里有没有人对这个问题有任何经验并且可以帮助我寻求最佳解决方案?

澄清一下:我的业务逻辑函数不仅仅是像“GetUserById”这样的简单函数。

一些功能包括访问与其他对象有关系的对象。(例如 - 我可以在同一功能中添加用户 + 部门 + 办公室)。

4

1 回答 1

2

对于这样的事情,我建议使用存储库模式并使用像RhinoMOQ这样的模拟框架来测试您的业务逻辑,然后我会建议您对存储库进行一些集成测试。

首先,这遵循“单一职责原则”,允许您以几乎同样多的开销测试您的业务逻辑(模拟 ObjectContext 是一种痛苦),它允许您使用真实数据测试您的查询。我强烈声明任何经过良好测试的解决方案都将包括单元测试和集成测试。

于 2012-06-06T16:48:33.317 回答