【发布时间】:2016-01-12 10:40:36
【问题描述】:
我正在使用 Moq 对我们使用 Entity Framework 的一些代码进行单元测试。在我的单元测试中,我有以下代码,但是当我测试它时,我无法获得正确的返回值(一切编译正常,但 count 的结果为 0 并返回 null)。这表明我的 Entity 对象从未添加到我的模拟仓库中。
[TestMethod]
public void GetEntity_ValidName_EntityReturned()
{
Entity testEntity = new Entity();
testEntity.Name = "Test";
var mockService = new Mock<IUnitOfWork>();
mockService.Setup(mock => mock.EntityRepo.Add(testEntity));
IUnitOfWork testDB = mockService.Object;
testDB.EntityRepo.Add(testEntity);
Entity testEntity2 = EntityHelper.getEntity(testDB,testEntity.Name);
int count = testDB.EntityRepo.Count();
Assert.AreEqual(testEntity.Name,testEntity2.Name);
}
如何添加实体?我什至需要吗?我还尝试了以下无法编译的方法:
mockService.Setup(mock => mock.EntityRepo.Add(testEntity)).Returns(testEntity);
同上:
mockService.SetupGet(mock => mock.EntityRepo.Add(testEntity)).Returns(testEntity);
编辑:这是测试的目标:
public static Entity getEntity(IUnitOfWork database, string entityName)
{
Entity _entity = database.EntityRepo.Find(x => x.Name.ToLower().Trim() == entityName).FirstOrDefault();
return _entity;
}
【问题讨论】:
-
你能发布测试目标的代码吗?一般来说,你只需要返回你将在测试中使用的东西。
-
我现在就添加它
标签: c# entity-framework unit-testing moq