c# - Moq.Mock.Verify() 是否使用身份或.Equals() 比较参数?

标签 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

最佳答案

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

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

关于c# - Moq.Mock.Verify() 是否使用身份或.Equals() 比较参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553805/

相关文章:

C# 字符串数组只获取前 10 个值

c# - Ninject:实体对象不能被 IEntityChangeTracker 的多个实例引用

c# - 模拟 IOrganizationService (Dynamics CRM) 时未过滤 LINQ 查询结果

c# - 模拟 System.Net.FtpClient GetHash 方法

Moq:设置一个不返回任何值的方法

c# - 柱形图中的多个系列 asp.net 4.0

c# - 我的验证(检查数字是否在数组中,然后将其更改为不同)有什么问题?

.net - NSubstitute的限制是什么,特别是MOQ?

c# - 如何进行单元测试以测试检查请求 header 的方法?

c# - 将 XmlDocument 转换为字符串