c# - ToArray 似乎无法使用 Moq 的 Verify 方法

标签 c# unit-testing moq

我正在尝试使用以下代码使用 Moq 验证方法调用。

var _payload= new List<KeyValuePair<string, object>>
{
    new KeyValuePair<string, object>("Test", TestNum),
    new KeyValuePair<string, object>("FirstRunTime", DateTime.Parse("19-Apr-2001 09:30:00"))
};

上面的 List 定义对于以下两段代码是通用的。我最初尝试过这个::

mockMessageProcessor.Verify(service => service.QueueMessage(
    DateTime.Parse("19-Apr-2016 10:05:00"), 
    "TestJobKey",
    _payload.ToArray()), Times.Once);

这表示没有使用这些参数调用上述方法。将相同的东西放在变量中是可行的。

var payloadArray = _payload.ToArray();
mockMessageProcessor.Verify(service => service.QueueMessage(
    DateTime.Parse("19-Apr-2016 10:05:00"), 
    "TestJobKey",
    payloadArray), Times.Once);

以上验证有效。只是想知道为什么会这样。

最佳答案

从上面的评论中引用 Aron:

因为 Equals(_payload.ToArray(), _payload.ToArray()) == falseEquals(payloadArray, payloadArray) == true

关于c# - ToArray 似乎无法使用 Moq 的 Verify 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36708858/

相关文章:

c# - 使用 Entity Framework Code First 时创建外键属性有什么意义?

c# - MVC 应用程序可以在 Visual Studio 中运行,但不能在 IIS7 中运行

ios - Xcode 5.1 打破了一些测试

c# - it.isAny 和 it.is 在单元模拟测试中是什么

moq - Moq Event Aggregator是否可能

c# - 处理动画工具数据存储的最有效/最快速的方法

c# - 托管到 iis 时无法访问打印机

c# - 如何在 C# 中模拟来自 httpclient 的响应,Azure 函数,如何测试

c# - 在大型依赖对象图上注入(inject)模拟

silverlight - 使用 Moq 在 Silverlight WCF 代理中模拟异步调用