Does Moq.Mock.Verify() compare parameters using identity or .Equals()?

社会主义新天地 提交于 2020-01-01 08:31:16

问题


In a command like

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

Does Moq use comparison by identity or by using .Equals() to determine whether someMethod() was ever called with anotherObj as a parameter? In other words, does the object I indicate as a parameter for foo.someMethod() have to be the exact same object that someMethod() was called with earlier for the verification to pass, or does it only have to be one that is equal to anotherObj?


回答1:


Moq will compare by identity, it will be looking for the exact instance that you specified using identity. If this is not what you want, and you are looking for equals comparison instead, you can use It.Is:

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


来源:https://stackoverflow.com/questions/14553805/does-moq-mock-verify-compare-parameters-using-identity-or-equals

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!