如何使用EntityFramework和Moq进行单元测试?我是Moq的新手,想将其用作数据的后备存储-但不接触实时数据库。我的设置如下:这是我目前的测试://ARRANGEvaruser=newUser(){FirstName="Some",LastName="Guy",EmailAddress="some.guy@mockymoqmoq.com",};varmockSet=newMockDbSet();varmockContext=newMock();mockContext.Setup(c=>c.Set()).Returns(mockSet.Object);//ACT使用(varuow=UnitOfWork.Create(mockContext.Object)){uow.UserRepository.Add(user);uow.SaveChanges();}//断言mockSet.Verify(u=>u.Add(It.IsAny()),Times.Once());我的测试似乎是成功的,因为它验证用户已被添加到模拟DbSet-但我需要做的是实际获取该数据并对其执行进一步的断言(这只是一个临时测试)。请告知,测试框架正在处理它。此外,如果它们更易于使用,我可以选择迁移到其他测试框架。谢谢。更新:这是我的工作代码。单元测试//ARRANGEvaruser=newUser(){FirstName="Some",LastName="Guy",EmailAddress="some.guy@mockymoqmoq.com",};varmockSet=newMockDbSet();varmockContext=newMock();mockContext.Setup(c=>c.Set()).Returns(mockSet.Object);//ACT使用(varuow=UnitOfWork.Create(mockContext.Object)){uow.UserRepository.Add(user);uow.SaveChanges();}//断言mockSet.Verify(u=>u.Add(It.IsAny()),Times.Once());//TODO:现在可以通过访问mockSet.BackingStore进行进一步的断言。}MockDbSetclassMockDbSet:MockwhereTEntity:class{publicICollectionBackingStore{get;放;}publicMockDbSet(){varqueryable=(this.BackingStore??(this.BackingStore=newList())).AsQueryable();this.As().Setup(e=>e.Provider).Returns(queryable.Provider);this.As().Setup(e=>e.Expression).Returns(queryable.Expression);this.As().Setup(e=>e.ElementType).Returns(queryable.ElementType);this.As().Setup(e=>e.GetEnumerator()).Returns(()=>queryable.GetEnumerator());//模拟实体的插入this.Setup(e=>e.Add(It.IsAny())).Returns((TEntityentity)=>{this.BackingStore.Add(entity);returnentity;});//TODO:可以模拟其他DbSet成员,例如Remove()。您只需要创建一个集合作为后备存储,并使用后备集合模拟枚举DbSet新列表());varqueryable=data.AsQueryable();this.As>().Setup(e=>e.Provider).Returns(queryable.Provider);this.As>().Setup(e=>e.Expression).Returns(queryable.Expression);this.As>().Setup(e=>e.ElementType).Returns(queryable.ElementType);this.As>().Setup(e=>e.GetEnumerator()).Returns(()=>queryable.GetEnumerator());//模拟实体的插入this.Setup(_=>_.Add(It.IsAny())).Returns((TEntityarg)=>{data.Add(arg);返回参数;});//...同样可以对其他成员做同样的事情,比如Remove}}所以现在你可以使用列表来保存数据以上是C#学习教程:HowtodounittestingwithEntityFrameworkandMoq?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——//ARRANGEvardataSource=newList();//(数据源);varmockContext=newMock();mockContext.Setup(c=>c.Set()).Returns(mockSet.Object);//ACT使用(varuow=UnitOfWork.Create(mockContext.Object)){uow.UserRepository.Add(user);uow.SaveChanges();//断言mockSet.Verify(u=>u.Add(It.IsAny()),Times.Once());Assert.IsTrue(dataSource.Contains(user));//你==用户));//本文摘自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: