我很难弄清楚如何用Moq在C#中设置indexers。Moq文档很弱,我做了很多搜索...我想要做的事情与How to Moq Setting an Indexed property的解决方案类似
var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);
我想修改上面的代码,使其适用于任何索引和任何值,这样我就可以这样做了:
someClass.Object.SomeIndexedProperty[1] = 5;
目前我有以下内容,它对索引属性getter非常有效,但是如果我设置了值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]);
https://stackoverflow.com/questions/2916348
复制相似问题