2016-12-13 3 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

Смежные вопросы