2011-08-02 175 views
3

我試圖模擬一個IDataRecord接口。使用Moq模擬IDataRecord

到目前爲止,我有:

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

但Visual Studio中拋出上的最後一行編譯錯誤:

錯誤2無法應用與[]的索引類型爲最小起訂量「的表達。模擬<System.Data.IDataRecord>'

有什麼建議嗎?

回答

4

的錯誤是什麼視覺工作室說。您正在將索引應用於Mock類的實例,而不是其通用參數(您的情況爲IDataRecord)。使用Mock.Object將返回IDataRecord並對其應用索引的屬性

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

您已經創建了一個對象模型(類型爲IDataRecord)。但是,您正試圖訪問mockIDataRecord [id],這意味着mockIDataRecord是一個集合(Array?)。

類型不匹配可能是導致錯誤的原因。

你可以嘗試這樣的事情,而不是(我沒有檢查語法):

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