设置要在Moq中添加的对象集合

时间:2016-12-13 20:43:00

标签: c# moq

我想跟踪单元测试中添加的项目。我这样设置我的收藏:

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()方法,前一个&#34; mock&#34;的所有属性都是如此。对象被替换。

1 个答案:

答案 0 :(得分:1)

原因是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);
});