Moqを使用してC#でインデクサーを設定する方法を理解するのに問題があります。Moqのドキュメントは弱く、私は多くの検索を行いました...私がやりたいことは、Moqのインデックス付きプロパティの設定方法のソリューションと似ています。
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]);