15

在类似的命令中

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

4

1 回答 1

23

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

mockObj.Verify(foo => foo.someMethod(It.Is<MyObject>(m => m.Equals(anotherObj))));
于 2013-01-28T00:25:10.200 回答