У меня возникает проблема, когда я пытаюсь высмеять объект, который содержит свойство Items
типа ICollection<>
. Я получаю следующее сообщение об ошибке:Moq a virtual ICollection <> свойство, которое имеет частный набор: «Неверная настройка на не виртуальном»
System.NotSupportedException: Invalid установки на невиртуальном (переопределение в VB) член: т => m.Items
Проблема в том, что свойство товары уже является виртуальным.
Я воспроизвел ошибку, что я получаю в моем проекте, в песочнице ниже:
public class ItemList
{
public virtual int Id { get; set; }
}
public class SpecialList
{
public virtual string Token { get; internal set; }
public virtual ICollection<ItemList> Items { get; private set; }
}
Эта ошибка возникает в моем тесте, когда я пытаюсь SetupProperty
так:
[TestFixture]
public class TestSpecialList
{
[Test]
public void Mocking_Virtual_ICollection()
{
var mockModel = new Mock<SpecialList>();
var listItem = new List<ItemList> {new ItemList {Id = 007}};
mockModel.SetupProperty(m => m.Items, listItem);
}
}
Am I что-то не так? Возможно ли для Moq объект, содержащий свойство ICollection <>?
Можете ли вы сделать mockModel.object.items = listItem? – TJF
@ user1168234 Не в моем случае, потому что набор должен быть закрытым. – ForceMagic