Verwenden von Moq zum Festlegen von Indexern in C #
Ich habe Probleme herauszufinden, wie man @ einstel indexers in C # mit Moq. Die Moq-Dokumentation ist schwach und ich habe viel gesucht ... was ich gerne machen würde, ist ähnlich wie in der Lösung vonHow to Moq Festlegen einer indizierten Eigenschaft:
var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);
Ich möchte das Obige so ändern, dass es für jeden Index und jeden Wert funktioniert, sodass ich einfach so etwas tun kann:
someClass.Object.SomeIndexedProperty[1] = 5;
Zurzeit habe ich die folgenden, die für den indizierten Eigenschafts-Getter großartig funktioniert, aber wenn ich jemals den Wert gesetzt habe, ignoriert Moq ihn:
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]);