Мне трудно понять, как установить indexers в С# с помощью Moq. Документация Moq слаба, и я много раз искал... то, что я хотел бы сделать, аналогично в решении Как Moq Установка свойства Indexed:
var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);
Я хочу изменить выше, чтобы работать для любого индекса и любого значения, поэтому я могу просто сделать что-то вроде этого:
someClass.Object.SomeIndexedProperty[1] = 5;
В настоящее время у меня есть следующее, которое отлично работает для индексатора с индексированным свойством, но если я когда-либо установил значение Moq, он игнорирует его:
var someValues = new int[] { 10, 20, 30, 40 };
var someClass = new Mock<ISomeClass>();
someClass.Setup(o => o.SomeIndexedProperty[It.IsAny<int>()])
.Returns<int>(index => someValues[index]);
// Moq doesn't set the value below, so the Assert fails!
someClass.Object.SomeIndexedProperty[3] = 25;
Assert.AreEqual(25, someClass.Object.SomeIndexedProperty[3]);