我正在尝试模拟IDataRecord接口。
到目前为止,我有:
var mockIDataRecord = new Mock<IDataRecord>();
mockIDataRecord.SetupGet(c => c["id"]).Returns(7);
var z = mockIDataRecord["id"];
但是Visual Studio在最后一行抛出了编译错误:
错误2无法将带有[]的索引应用于类型为“Moq.Mock&lt; System.Data.IDataRecord&gt;”的表达式
有什么建议吗?
答案 0 :(得分:4)
错误是视觉工作室所说的。您正在将索引应用于Mock
类的实例,而不是其通用参数(在您的情况下为IDataRecord
)。使用将返回IDataRecord并对其应用索引的Mock.Object
属性
var z = mockIDataRecord.Object["id"];
答案 1 :(得分:0)
您已创建对象的模拟(IDataRecord类型)。但是你试图访问mockIDataRecord [id],这意味着mockIDataRecord是一个集合(数组?)。
类型不匹配可能是造成错误的原因。
你可以尝试这样的东西(我没有检查语法):
var mockIDataRecord = new Mock<IDataRecord[]>();