Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/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 如何使用模拟DbContext测试延迟加载的实体?_Entity Framework_Unit Testing_Mocking_Dbcontext - Fatal编程技术网

Entity framework 如何使用模拟DbContext测试延迟加载的实体?

Entity framework 如何使用模拟DbContext测试延迟加载的实体?,entity-framework,unit-testing,mocking,dbcontext,Entity Framework,Unit Testing,Mocking,Dbcontext,我使用的是假的DbContext 一切正常,但是我使用的是“代码优先”的方法,并且一些测试中的代码依赖于相关实体的延迟加载 public partial class Entity { public int EntityId { get; set; } public string EntityName { get; set; } public virtual ICollection<EntityLifeCycle> EntityLifeCycles { get

我使用的是假的DbContext

一切正常,但是我使用的是“代码优先”的方法,并且一些测试中的代码依赖于相关实体的延迟加载

public partial class Entity
{
    public int EntityId { get; set; }
    public string EntityName { get; set; }

    public virtual ICollection<EntityLifeCycle> EntityLifeCycles { get; set; }
    public virtual EntityStatus PreviousStatus { get; set; }
    public virtual EntityStatus CurrentStatus { get; set; }
}
如何修改我的测试代码(而不是正在测试的代码)以适应这种情况

研究链接供参考:


不要试图模拟延迟加载。只需准备测试所需的模拟。通常,您希望避免单元测试中的延迟加载问题。这更多的是一个基础设施问题,如果需要,您可以编写一个集成测试来验证所需的行为。它通常由ORM基础设施提供。如果ORM没有提供延迟加载,您可能需要进行单元测试来验证,例如,代码将返回IEnumerable等,但情况似乎并非如此。通过隔离执行延迟加载/数据访问的服务并测试您所实现的代码的行为,您可以获得更多的价值。@Raj:谢谢您的评论。因为代码依赖于延迟加载(目前),所以我想我将使用集成测试方法。我已经将存储库设置为EF上下文的服务层,但它开始看起来像一块额外的毯子。然后我偶然看到了Ayende Rahien的演讲,这让我进一步重新考虑了架构。
if (entity.EntityLifeCycles.Count() > 0)
{
    ...
}