C# 资产在犀牛模仿中被调用

C# 资产在犀牛模仿中被调用,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我有一个正在测试的对象,它对数据访问对象进行了相当复杂的调用。看起来像 object.DoSomething(somestring、someObject、someOtherObject、someOtherObject) 在我的测试结构中,我有一个模拟版本的object,我想测试Dosomething是用somestring==“value1”和someObject.porpertyA==“value2”调用的 我不能使用简单的AssertWasCalled()重载,因为我没有;I don’我不知

我有一个正在测试的对象,它对数据访问对象进行了相当复杂的调用。看起来像

object.DoSomething(somestring、someObject、someOtherObject、someOtherObject)

在我的测试结构中,我有一个模拟版本的object,我想测试Dosomething是用somestring==“value1”和someObject.porpertyA==“value2”调用的

我不能使用简单的AssertWasCalled()重载,因为我没有;I don’我不知道(或关心)其他物体。我注意到另一个重载对设置约束采取了操作,但我从未见过它被使用。

请查看

我怀疑你想要:

Expect.Call(object.DoSomething(null, null, null, null)
      .IgnoreArguments() // Ignore those nulls
      .Constraints(Is.Equal("value1"),
                   Property.Value("PropertyA", "value2"),
                   Is.Anything(),
                   Is.Anything())
      .Return(whateverItShouldReturn);
小菜一碟:

yourstub.AssertWasCalled(
             x => x.DoSomething(
                Arg<string>.Is.Equal("value1"), 
                Arg<someObjectType>.Is.Equal(value2), 
                Arg<someOtherObjectType>.Is.Anything,   <======== NOTE THIS!
                Arg<someOtherOtherObjectType>.Is.Equal(value3)
             )
);
调用yourstub.assertwas( x=>x.DoSomething( 参数等于(“值1”), 参数等于(值2),
我发现唯一有用的另一件事是使用Arg.Matches(y=>y.property==where);检查参数对象上的值。