我正在尝试模拟IDataRecord接口。

到目前为止,我有:

        var mockIDataRecord = new Mock<IDataRecord>();
        mockIDataRecord.SetupGet(c => c["id"]).Returns(7);
        var z = mockIDataRecord["id"];


但是,Visual Studio在其最后一行抛出编译错误:

错误2无法将[]索引应用于类型'Moq.Mock '的表达式

有什么建议么?

最佳答案

错误是Visual Studio所说的。您正在将索引应用于Mock类的实例,而不是其通用参数(在您的情况下为IDataRecord)。使用Mock.Object属性,该属性将返回IDataRecord并对其应用索引

var z = mockIDataRecord.Object["id"];

09-11 06:33