相关疑难解决方法(0)

使用Moq在C#中设置索引器

我无法弄清楚如何使用Moq在C#中设置索引器.Moq文档很薄弱,我已经做了很多搜索......我想做的事情在如何设置索引属性的解决方案中类似:

var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);
Run Code Online (Sandbox Code Playgroud)

我想修改上面的内容以适用于任何索引和任何值,所以我可以这样做:

someClass.Object.SomeIndexedProperty[1] = 5;
Run Code Online (Sandbox Code Playgroud)

目前我有以下内容,它对索引属性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]);
Run Code Online (Sandbox Code Playgroud)

c# unit-testing indexer moq

19
推荐指数
2
解决办法
5963
查看次数

标签 统计

c# ×1

indexer ×1

moq ×1

unit-testing ×1