gpt4 book ai didi

c# - 设置最小起订量更新测试

转载 作者:行者123 更新时间:2023-11-30 21:05:19 25 4
gpt4 key购买 nike

我正在为各种实体开发最小起订量测试。我可以很好地设置创建和删除测试,但不能更新——存储库中的实体不会改变。我知道这是因为 PersistAll 什么都不做(可能是因为我缺少设置)。

这是插入持久设置的示例(我正在寻找更新版本):

agg.Setup(a => a.InsertOnPersist<Thingy>(model)).Callback(() => mockThingies.Add(model));

此外,我还有这个将列表链接到存储库:

agg.Setup(a => a.GetObjectStore<Artist>()).Returns(mockThingies.AsQueryable());

这是我的更新测试示例:

 public List<Thingy> mockThingies; //this is our repository
[TestInitialize]
public void SetupTests()
{
mockThingies= new List<Thingy>();
Thingy someThingy = new Thingy();
someThingy.Name = "MyName";
someThingy.ID = 1;
mockThingies.Add(someThingy);
}

[TestMethod]
public void CanEditExistingThingy()
{
Mock<BusinessExceptionBroadcaster> beb = new Mock<BusinessExceptionBroadcaster>();
Mock<IValidationEngine> valid = new Mock<IValidationEngine>();
Mock<IAggregate> agg = new Mock<IAggregate>();
agg.Setup(a => a.GetObjectStore<Thingy>()).Returns(mockThingies.AsQueryable());
ThingyRepository repo = new ThingyRepository (agg.Object);
ThingyService service = new ThingyService (repo, beb.Object, valid.Object);
Thingy newThingy = new Thingy();
newThingy.ID = 1; //same as old
newThingy.Name = "newname"; //new name
Assert.AreNotEqual(newThingy.Name,mockThingies[0].Name);
Assert.IsTrue(service.Update(newThingy));
Assert.AreEqual(newThingy.Name, mockThingies[0].Name); //FAILS HERE
}

这是要更新的代码:

    public bool Update(Thingy entity)
{
Thingy existingThingy= _Thingy.FirstOrDefault(t=>t.ID == entity.ID);
if (existingThingy != null)
{
_Thingy.PersistAll();
return true;
}
else
{
//unimportant
}
}
return false;
}

最佳答案

不要担心测试更新调用是否真的更新了一些东西。您只想验证您的服务是否调用存储库上的适当方法来执行更新并持久保存。测试实际更新有点超出了这个测试的范围。

关于c# - 设置最小起订量更新测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745744/

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