如何使用lambda表达式Entity Framework/Repository模式进行单元测试

pun*_*ter 0 c# lambda unit-testing entity-framework dependency-injection

我们试图找出基本情况下单元测试的重点,如下面的代码所示.为这个有益的单元测试吗?我们不是试图测试实体框架.我们只是想确保lambda表达式做它应该做的...我们的想法是我们将使用DI传递IQIeryable的SOMETHING.在实践中它将是EF但是用于单元测试并且将是POCO对象/集合.这有道理吗?我们刚刚开始并希望在超出此基本代码之前掌握这些概念.

   public class CongressRepository
{
    CongressDb_DevEntities context = new CongressDb_DevEntities();

    CongressRepository(DbContext db)
    {
        context = (CongressDb_DevEntities) db;
    }

    public IQueryable<tMember> GetAllMembers
    {
        get { return context.tMembers; }
    }

    public IQueryable<tMember> GetVotingMembers
    {
        get { return context.tMembers.Where(x => x.age > 18); }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*sen 5

EF使用LINQ to Entities,但在模拟EF时,您将切换到LINQ to Objects.由于LINQ to Entities和LINQ to Objects之间存在差异,因此可能会导致单元测试出现误报.如果没有集成测试,您只能在生产环境中看到这些差异/错误.