我试图用莫克嘲笑IDataRecord
。如何模拟IDataRecord?
的模拟被创建为如下:
Mock<IDataRecord> mockDataRecord = new Mock<IDataRecord>();
下测试该生产线是:
DateTime timestamp = dataRecord.GetValueOrDefault<DateTime>("QUEUE_ADD_TS");
曾尝试:
mockDataRecord.Setup(r => r.GetValueOrDefault<DateTime>("QUEUE_ADD_TS")).Returns(now);
...但它给出了一个运行时错误:
Expression references a method that does not belong to the mocked object: r => r.GetValueOrDefault("QUEUE_ADD_TS")
也尝试用It.IsAny<String>()
代替"QUEUE_ADD_TS"
,但它没有区别。这应该很容易,但我正在挠头 - 感谢任何建议!
我看到了'IDataRecord'接口上没有'GetValueOrDefault'方法。它不是扩展方法吗? –
2013-05-08 08:14:17
很确定它就像错误提示一样。 GetValueOrDefault是一个扩展方法,所以不能直接存根。尝试改变索引器的存根,我确定例子会在某处:) – gaz 2013-05-08 08:14:25
啊,你们都是对的!结果'GetValueOrDefault'是一个扩展方法,并且是'static',所以不容易被模拟。不知道如何工作,但看着它... – 2013-05-08 08:23:16