如何在我的业务逻辑中单元测试实体框架(EF)?

时间:2012-06-06 16:26:38

标签: entity-framework unit-testing

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

我发布此问题是因为我只是看到 太多 解决此问题的方法!

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

  1. 使用名为TypeMock的昂贵商业工具(提及here)。
  2. 使用名为Effort的alpha开源工具(提到here)。
  3. 使用存储库模式 Rhino Mock 。针对真实数据库测试孤立的LINQ查询(提到here)。
  4. 这里陈述的一些方法存在一些问题:

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

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

    这里有没有人有这个问题的经验,可以帮我找到最好的解决方案吗?

    只是为了说清楚: 我的业务逻辑函数不仅仅是像'GetUserById'这样的简单函数。

    某些功能包括访问与其他对象有关系的对象。 (例如 - 我可以在同一个函数中添加用户+ departmant + office。)

1 个答案:

答案 0 :(得分:2)

为了做这样的事情,我建议使用Repository模式并使用像RhinoMOQ之类的模拟框架来测试你的业务逻辑,然后我建议你为你的存储库做一些集成测试。

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