0

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

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

我认为我可以使用 AsNoTracking(),但它没有用。

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

我读过有关禁用代理创建的信息,但这是唯一的选择吗?

我希望在淘汰 JavaScript 库中与 ko.utils.unwrapObservable() 有类似的东西(尽管我意识到完全不同的概念)。

4

1 回答 1

1

这是一个奇怪的集成测试(它根本不是单元测试,因为它使用数据库) - 只需定义静态期望而不是从数据库再次加载它就足够了。动态测试更容易出错并且可以隐藏问题。

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

于 2012-05-23T08:13:50.753 回答