ToArray 似乎无法使用 Moq 的 Verify 方法
ToArray doesn't seem to be working Moq's Verify method
我正在尝试使用以下代码验证使用 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"))
};
上面的列表定义对于以下两段代码是通用的。我最初尝试过这个::
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()) == false
而Equals(payloadArray, payloadArray) == true
我正在尝试使用以下代码验证使用 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"))
};
上面的列表定义对于以下两段代码是通用的。我最初尝试过这个::
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()) == false
而Equals(payloadArray, payloadArray) == true