我有一个模拟是这样创建的:
var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();
安装方法的intellisense表示:
“为调用void返回方法指定模拟类型上的设置。
但是模拟的方法p.GetBytes()不返回void,它返回一个字节数组。
或者,另一个安装方法被定义为Setup<>,我可以像这样创建我的模拟:
var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup<byte[]>(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();
此安装方法的intellisense声明:
“指定对值返回方法的调用的模拟类型的设置。
。
。
无论我选择哪种方法,它都编译并测试OK。所以,我搞不懂我该怎么做。.Setup()和.Setup<>()之间有什么区别,我做得对吗?
我们可以说,Moq的文档有点缺乏。:)
发布于 2011-07-20 19:38:15
编译器从传递给Setup()
的lambda中推断出您想要调用泛型版本,因此它很高兴地为您推断出泛型参数。如果使用Reflector,您将看到第一个代码示例实际上是调用Setup<byte[]>()
。
https://stackoverflow.com/questions/6767446
复制相似问题