我想跟踪单元测试中添加的项目。我这样设置我的收藏:
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;的所有属性都是如此。对象被替换。
答案 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);
});