RhinoMocks期望复杂对象作为参数

Tma*_*ate 7 .net c# unit-testing rhino-mocks mocking

如果使用简单的参数(如Arg.Is.Equal(1)等)调用我的方法,我使用AssertWasCalled进行检查时使用RhinoMocks没有问题.

但是,当我试图期待我自己创建的复杂对象时,它会失败,例如

Arg<CustomClass>.Is.Equal(CustomClassInstance)
Run Code Online (Sandbox Code Playgroud)

当然,我很清楚这不应该有效,因为引用不匹配.但是,我的问题是:我如何让它发挥作用?如何让RhinoMocks期望一个具有特定值的对象?

Pet*_*ete 9

您可以使用Arg<T>.Matches (Predicate<T> predicate):

mock.AssertWasCalled (m => m.Foo (Arg<CustomClass>.Matches (c => c.Foo == CustomClassInstance.Foo));
Run Code Online (Sandbox Code Playgroud)