2016-12-13 40 views
1

我想跟蹤單元測試中添加的項目。我設置我的收藏,像這樣:在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()方法被調用,以前的「模擬的所有屬性「對象被替換。

回答

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); 
}); 
+0

沒錯。這工作。謝謝 – ShaneKm