【问题标题】:TDD with Entity, mocking the generated Entity classes?带有实体的 TDD,模拟生成的实体类?
【发布时间】:2014-05-21 21:54:58
【问题描述】:

抱歉,我读了这篇文章:

TDD and ADO.NET Entity Framework

但我不认为它涵盖了我正在寻找的内容,并且其他类似的问题似乎没有答案。所以,如果这个问题已经回答了,请原谅我。

我正在编写一个应用程序。我创建了一些实体类。我想在单元测试期间对此进行模拟,因为我相信 MS 的实现足以保证跳过它的测试。 =-}

所以,我的第一个猜测:

获取生成的 ObjectContext 派生类并从中生成一个接口,用于返回 ObjectQuery 和 Add 方法的读取属性(此时我不担心更新现有对象,只是读取)。但是,我在测试过程中很快遇到了问题,因为我无法轻松地让 ObjectQuery 属性正常工作。

我看到了 The Wayward Weblog 的帖子关于做一些与此类似的事情,但使用 Linq to SQL 并且它只是引出了一个问题,没有人想出比这更好的模拟实体框架的方法吗?!

谢谢!

【问题讨论】:

    标签: c# tdd mocking entity


    【解决方案1】:

    等待 EF v2.0(可能更多年)或切换到 NHibernate。我选择了第二个选项(不容易,但完全支持 TDD 并且没有数据库限制)。

    【讨论】:

    • 同意,事实上,我现在正在使用 Fluent NHibernate,而且我对它比 EF 感到非常满意。遗憾的是,向客户推销使用 MS 技术而不是 OS 技术通常更容易。
    • 有些人永远是 M$ 的粉丝。只是提醒他们大多数网络服务器都是开源的。恕我直言,操作系统技术绝对是前进的方向。 OpenSource 的最大优点是,如果它可能导致问题,我可以遍历代码。我总是第二次猜测或依赖(有时是虚假的)带有 M$ 的文档,而且他们喜欢更改 API,就好像以前的版本不存在一样。幸运的是,现在有很多很棒的 OS .net 项目。 nHibernate 就是其中之一。
    【解决方案2】:

    所以我认为没有答案。不幸的是,在进行了大量谷歌搜索之后,我认为 EF 并不真正支持 TDD 开发方法,这绝对是一种耻辱。是时候采用 nHibernate 了,听起来不错。

    【讨论】:

    • 我否决了这个答案,因为有多种方法可以将 TDD 与 EF 一起应用。请参阅下面的答案 (stackoverflow.com/a/23598940/3481183)。
    • 感谢您取消 5 年前提出的有关 EF 不同版本的回答。
    • 不幸的是,它仍然活跃在 Stack Overflow 中,我多年来一直在使用 EF 进行 TDD。
    • 嘿,这是你的声誉,我很好。我很久以前就放弃了 EF 以获得更好的解决方案。 =-}
    • 你是说 NHibernate 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多