作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个像这样创建的模拟:
var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();
Setup 方法的智能感知是这样说的:
"Specifies a setup on the mocked type for a call to a void returning method."
但是模拟方法 p.GetBytes() 不返回 void,它返回一个字节数组。
或者另一个 Setup 方法被定义为 Setup<>,我可以像这样创建我的 mock:
var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup<byte[]>(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();
此设置方法的智能提示指出:
"Specifies a setup on the mocked type for a call to a value returning method."
.
.
无论我选择哪种方法,它都可以编译和测试。所以,我很困惑我应该用哪种方式来做这件事。 .Setup() 和 .Setup<>() 之间有什么区别,我做对了吗?
我们应该说,Moq 的文档有些欠缺。 :)
最佳答案
编译器根据传递给 Setup()
的 lambda 进行推断你打算调用通用版本,所以它很乐意为你推断通用参数。如果您使用 Reflector,您会发现第一个代码示例实际上是在调用 Setup<byte[]>()
。 .
关于c# - 最小起订量混淆 - Setup() v Setup<>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6767446/
我是一名优秀的程序员,十分优秀!