好的 - 所以我有这个测试。我写它时期望它会失败,因为我的 OnSaveCommand 确实调用了我的适配器 Save 方法。但令我惊讶的是,它没有说“在模拟中多次执行调用”。我完全糊涂了。我根本不叫它goink。我的问题是我不知道如何分辨它叫什么?如果我在哪里运行代码,我会在一个断点处抛出一个断点,并在调用它时查看调用堆栈,但这在这里并不真正起作用,因为它当然是一个模拟。
我试图查看最小起订量快速入门以获得一些想法,但事实是我只是被难住了。测试的第一部分发布了一个导致 DiscountsForSelectedCompany 列表被填充的事件,我可以看到所有发生的事情,然后我执行保存命令对吗?然后我得到错误。就像我说的那样,我很难过——如果有人能指出我正确的方向,那就太棒了。
[Test]
public void SaveCommand_Will_Call_Adapter_SaveDiscounts_For_All_Edited_Discounts()
{
eventAggregator.GetEvent<SetCompanyIdEvent>().Publish(182);
vm.DiscountsForSelectedCompany.Single(x => x.Id == 1).IsEdited = true;
mockVariablePricingAdapter.Setup(x => x.SaveDiscounts(
It.Is<List<DisplayCompanyDiscount>>(a => a.First().Id == 1))
).Verifiable();
vm.SaveCommand.Execute();
mockVariablePricingAdapter.Verify(x => x.SaveDiscounts(It.Is<List<DisplayCompanyDiscount>>(a => a.First().Id == 1)), Times.Once());
}
谢谢!
EIDT!哇——嘿!!!我将“Times.Once()”更改为“Times.AtLeastOnec()”,如果失败说“没有在模拟上执行调用:” - 有人知道吗?它是一个错误吗?