设置 collection 共 objects 将添加到最小起订量

Setup collection of objects to be added in Moq

我想跟踪单元测试中添加的项目。我已经像这样设置了 collection:

var items = new List<IItem>();
var mock = new Mock<IItem>();
mockCollection.Setup(x => x.AddNew()).Returns(() =>
{
    mock.SetupAllProperties();
    return mock.Object;
}).Callback(() =>
{
    items.Add(mock.Object);
});

这有效并且新项目被添加到列表中,但是,这是有问题的,因为每当调用 AddNew() 方法时,先前 "mock" 的所有属性object 被替换。

原因是AddNew方法没有参数,但是你给回调添加了一个参数(那个参数从哪里来???)。相反,请尝试以下

Mock<IItem> mock=null;
var items = new List<IItem>();
mockCollection.Setup(x => x.AddNew()).Returns(() =>
{
    mock = new Mock<IItem>();
    mockShipment.SetupAllProperties();
    return mock.Object;
}).Callback(()=>
{
    items.Add(mock.Object);
});