gpt4 book ai didi

c# - 无法让最小起订量返回值

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:57 24 4
gpt4 key购买 nike

我正在使用 Moq 对我们使用 Entity Framework 的一些代码进行单元测试。在我的单元测试中,我有以下代码,但是当我测试它时,我无法获得正确的返回值(一切编译正常,但计数的结果为 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;
}

最佳答案

这是您需要模拟的命令:

database.EntityRepo.Find

您无需担心模拟服务,只需 IUnitOfWork像这样的东西:

testDB.Setup(m => m.Find(It.IsAny<object[]>())).Returns(new List<Entity>() entity);

工作示例:

由于双点,我们需要为 EntityRepoIUnitOfWork 上挂一个 mock

[TestMethod]
public void GetEntity_ValidName_EntityReturned()
{
Entity testEntity = new Entity();
testEntity.Name = "Test";

var mockEntityRepo = new Mock<IRepo>(); // Type of Repo here
var mockService = new Mock<IUnitOfWork>();
mockService.Setup(m => m.EntityRepo).Returns(mockEntityRepo.Object);

mockEntityRepo.Setup(m => m.Find(It.IsAny<Expression<Func<Entity, bool>>>())).Returns(testEntity);

Entity testEntity2 = EntityHelper.getEntity(mockService.Object, testEntity.Name);
int count = testDB.EntityRepo.Count();

Assert.AreEqual(testEntity.Name,testEntity2.Name);
}

模拟设置应与被测方法中的调用相对应。

关于c# - 无法让最小起订量返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com