Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework Assert.AreEqual DbContext实体单元测试_Entity Framework_Unit Testing_Entity Framework 4.1_Assert - Fatal编程技术网

Entity framework Assert.AreEqual DbContext实体单元测试

Entity framework Assert.AreEqual DbContext实体单元测试,entity-framework,unit-testing,entity-framework-4.1,assert,Entity Framework,Unit Testing,Entity Framework 4.1,Assert,我希望对我的业务逻辑进行单元测试,通过业务逻辑加载实体,并将其与直接从dbcontext加载的实体进行比较,从而加载正确的数据 我猜Assert.AreEqual失败是因为实体是按跟踪方式加载的 我原以为可以使用AsNoTracking(),但它不起作用 是否有一种将实体从实体框架“展开”到POCO的方法 我读过关于禁用代理创建的内容,但这是唯一的选项吗 我希望与敲除javascript库中的ko.utils.unwrapObservable()类似(尽管我意识到了一个完全不同的概念)。这是一个

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

我猜Assert.AreEqual失败是因为实体是按跟踪方式加载的

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

是否有一种将实体从实体框架“展开”到POCO的方法

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


我希望与敲除javascript库中的ko.utils.unwrapObservable()类似(尽管我意识到了一个完全不同的概念)。

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


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

谢谢@Ladisslav。很好的一点是:“它根本不是单元测试,因为它使用数据库”,单元测试感觉不太正确,我正计划让它们更好。你的意思是因为它使用数据库来实现它的“预期”还是因为它使用数据库?因为它使用数据库。单元测试应该独立于外部因素来测试单个单元。谢谢,代码让我不寒而栗,我希望尽快重构它。谢谢你的帮助。