如何使用Moq来模拟具有两个索引的索引属性
这个问题清楚地显示了你如何用MOQ模拟索引属性: 如何设置索引属性
但是,如果你有两个索引呢?
例如,假设您有一个_Worksheet对象(来自vsto)
var mockWorksheet = new Mock<_Worksheet>();
你想创build一个名为Cells的属性,这样你就可以像这样使用它:
var range = worksheet.Cells[1,1];
注意:范围可以是另一个模拟,可以用下面的代码来模拟:var mockRange = new Mock();
有什么build议么?
你就像其他东西一样嘲笑房产指数。 他们被视为属性访问器,所以你会使用SetupGet
:
var mockWorksheet = new Mock<Worksheet>(); var mockRange = new Mock<Range>(); var mockCell = new Mock<Range>(); // Setup the Cells property to return a range mockWorksheet.SetupGet(p => p.Cells).Returns(mockRange.Object); // Setup the range to return an expected "cell" mockRange.SetupGet(p => p[1, 2]).Returns(mockCell.Object); var expectedCell = mockWorksheet.Object.Cells[1, 2]; // expectedCell == mockCell.Object