【问题标题】:Mock IDataRecord using Moq使用 Moq 模拟 IDataRecord
【发布时间】:2011-08-02 14:09:04
【问题描述】:

我正在尝试模拟 IDataRecord 接口。

到目前为止我有:

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

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

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

有什么建议吗?

【问题讨论】:

    标签: c# unit-testing interface mocking moq


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您已经创建了一个对象的模拟(IDataRecord 类型)。但是,您正在尝试访问 mockIDataRecord[id] 这意味着 mockIDataRecord 是一个集合(数组?)。

      类型不匹配可能是导致错误的原因。

      你可以试试这样的东西吗(我没有检查语法):

      var mockIDataRecord = new Mock<IDataRecord[]>();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-13
        • 2019-09-11
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多