gpt4 book ai didi

c# - 最小起订量混淆 - Setup() v Setup<>()

转载 作者:太空狗 更新时间:2023-10-29 21:24:21 24 4
gpt4 key购买 nike

我有一个像这样创建的模拟:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com