【问题标题】:How do I verify my EF4 Code-Only mappings?如何验证我的 EF4 纯代码映射?
【发布时间】:2010-04-17 00:23:49
【问题描述】:

在 NHibernate 中,有一个类似 ThisOrThat.VeryfyMappings() 的方法(我不知道它的确切定义,因为我上次尝试过 NHibernate...)

我记得在某处看到过一篇博文,作者展示了如何在 Entity Framework 4 中进行一些类似的测试,但现在我找不到了。那么,如何测试我的 EF4 纯代码映射?

【问题讨论】:

    标签: c# unit-testing entity-framework-4 code-first


    【解决方案1】:

    您应该能够应用this blog post 中描述的相同方法。它描述了如何为 Fluent NHibernate 执行此操作,但对于 EF4 应该几乎相同。

    您需要自己实现 Validate(The)Mappings 方法,无论您是使用存储库方法还是直接通过上下文,基本思想都是相同的:插入一个对象并使用第二个存储库检索它/context 以验证所有字段是否已正确传输。需要额外的检查来验证引用。

    【讨论】:

    • 好吧,实现这个VerifyTheMappings 方法就是我需要帮助的地方。方法需要做什么?以及如何确保它实际测试了我希望它测试的内容?
    • 您的映射描述了类如何映射到底层数据库表,因此通过使用读写操作执行该映射,您基本上可以验证它是否有效。验证需要一个实际的数据库,读/写操作将是答案中提到的插入和选择。真的没那么复杂。 1) 定义映射。 2) 创建 VerifyMappings 方法并编写代码以插入对象,然后编写代码以检索保存的对象(使用不同的上下文绕过任何缓存)。 3)创建单元测试来调用VerifyMappings。
    • 好的。所以基本上,我只是编写一个使用我拥有的所有映射的方法,使用一个 ObjectContext 指定的所有参数插入给定类型的对象,使用不同的 ObjectContext 实例检索相同的对象,并验证所有属性是否相同价值观?
    • 完全正确。您可能还想通过创建一次使用多个对象的测试来测试关系。您将遵循相同的基本方法,但不是测试成员属性,而是测试对象之间的导航/链接是否正确保留。在自动回滚的单独事务中运行每个测试也是一个好主意,因为这会在每次测试后使数据库处于已知(未修改)状态。您的单元测试框架提供了可以轻松完成此任务的属性(例如 NUnit 中的 SetUp 和 TearDown)。
    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多