.net - 如何使用 Moq 模拟具有两个索引的索引属性

标签 .net excel mocking vsto moq

这个问题清楚地展示了如何使用 MOQ 模拟索引属性:How to Moq Setting an Indexed property

但是,如果你有两个索引呢?

例如,假设您有一个 _Worksheet 对象(来自 vsto)

        var mockWorksheet = new Mock<_Worksheet>();

您想创建一个名为 Cells 的属性,以便您可以像这样使用它:
        var range = worksheet.Cells[1,1];

笔记:
范围可以是另一个模拟,可以用以下方式模拟:
var mockRange = new Mock();

有什么建议么?

最佳答案

您像其他任何东西一样模拟属性索引器。它们被视为属性访问器,因此您可以使用 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

关于.net - 如何使用 Moq 模拟具有两个索引的索引属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26724301/

相关文章:

.net - 如何在窗口显示前计算 ActualWidth ActualHeight

c# - 拥有静态 IReadOnlyDictionary 字段是否线程安全?

excel - 在另一张纸上寻找包含特定值的单元格

excel - 是否有 Application.GetOpenFilename 的 Mac/PC 变体?

java - 模拟根据参数返回列表

unit-testing - Angular 服务测试有什么问题?

json - 单元测试 REST API

c# - websocket 成功握手,但没有正确发送接收消息(C# 服务器)

c#文件上传的分块传输结合访问ServiceStack中的路由参数

Excel 如果(和/如果(或