Moq.Mock.Verify()是否使用identity或.Equals()比较参数?

时间:2013-01-28 00:12:51

标签: c# moq

在像

这样的命令中
var mockObj = new Mock<MyObject>()
var anotherObj = Utilities.DoStuff();
// some tests...
mockObj.Verify(foo => foo.someMethod(anotherObj));

Moq是否按身份使用比较或使用.Equals()确定someMethod()是否曾使用anotherObj作为参数进行调用?换句话说,我指示为foo.someMethod()的参数的对象是否必须与先前为验证通过而调用someMethod()的对象完全相同,或者它只需要是一个等于anotherObj

1 个答案:

答案 0 :(得分:14)

Moq将按标识进行比较,它将查找您使用标识指定的确切实例。如果这不是您想要的,而您正在寻找equals比较,则可以使用It.Is

mockObj.Verify(foo => foo.someMethod(It.Is<MyObject>(m => m.Equals(anotherObj))));