对DbContext实体进行Assert.AreEqual单元测试

时间:2012-05-22 15:47:56

标签: entity-framework unit-testing entity-framework-4.1 assert

我希望单元测试我的业务逻辑是通过业务逻辑加载实体并将其与直接从dbcontext加载的实体进行比较来加载正确的数据。

Assert.AreEqual失败我猜是因为实体被加载为跟踪。

我认为我可以使用AsNoTracking(),但它不起作用。

有没有办法将实体从实体框架“解包”到POCO?

我读过关于禁用代理创建的内容,但这是唯一的选择吗?

我希望在淘汰javascript库中有类似的东西(虽然我意识到一个完全不同的概念),ko.utils.unwrapObservable()。

1 个答案:

答案 0 :(得分:1)

这是奇怪的集成测试(它根本不是单元测试,因为它使用数据库) - 它应该足以简单地定义静态期望而不是从数据库再次加载它。动态测试更容易出错,可能会隐藏问题。

要使其工作,您必须覆盖Equal以比较数据而不是引用。禁用代理创建将不起作用,因为您仍然会从业务逻辑和测试上下文的不同引用中获得不同的引用(除非您共享上下文,但在这种情况下,测试将更加奇怪)。