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

Kev*_*ica 10 c# moq

在像这样的命令中

var mockObj = new Mock<MyObject>()
var anotherObj = Utilities.DoStuff();
// some tests...
mockObj.Verify(foo => foo.someMethod(anotherObj));
Run Code Online (Sandbox Code Playgroud)

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

Bas*_*nni 16

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

mockObj.Verify(foo => foo.someMethod(It.Is<MyObject>(m => m.Equals(anotherObj))));
Run Code Online (Sandbox Code Playgroud)