C# moq:使用Setup()时,如何确定方法参数的相等性?
我正在使用C# moq:使用Setup()时,如何确定方法参数的相等性?,c#,unit-testing,mocking,moq,C#,Unit Testing,Mocking,Moq,我正在使用Setup()方法设置接口的模拟实例的行为 我正在设置的方法(我们称之为DoSomething())接受一个类的实例(我们称该类为Foo) Foo-Foo=//现有的Foo实例 Mock Mock=新Mock(); mock.Setup(x=>x.DoSomething(foo)).Returns(1); 我遇到的问题是,当我使用mock时,它与设置不匹配,因此从不返回1 有人能帮忙吗?Moq如何确定提供给设置方法的参数是否相等?我的问题的答案是Moq使用.Equals来确定设置方法
Setup()
方法设置接口的模拟实例的行为
我正在设置的方法(我们称之为DoSomething()
)接受一个类的实例(我们称该类为Foo
)
Foo-Foo=//现有的Foo实例
Mock Mock=新Mock();
mock.Setup(x=>x.DoSomething(foo)).Returns(1);
我遇到的问题是,当我使用mock时,它与设置不匹配,因此从不返回1
有人能帮忙吗?Moq如何确定提供给设置方法的参数是否相等?我的问题的答案是Moq使用
.Equals
来确定设置方法的参数是否相等。要获得更详细的答案,Moq使用(链接到当前最新版本4.13.1)。该匹配器的实现是
object.Equals
object.Equals
失败,并且值实现了IEnumerable
使用SequenceEqual
(对每个元素使用object.Equals
)false
R#在这里是一个很大的帮助,因为它可以为您的类自动生成Equals方法。请注意,它似乎使用
.Equals(object)
,而不是任何.Equals(T)
(如果您的类实现了IEquatable
)
Foo foo = // Existing foo instance
Mock<IMyInterface> mock = new Mock<IMyInterface>();
mock.Setup(x => x.DoSomething(foo)).Returns(1);