AssertWasCalled在犀牛嘲笑中

cap*_*aig 7 c# unit-testing rhino-mocks

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

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

在我的测试结构中,我有一个模拟版本的对象,我想测试Dosomething被调用somestring =="value1"和someObject.porpertyA =="value2".

我不能使用简单的AssertWasCalled()重载,因为我不知道(或关心)someOtherObject.我注意到另一个重载需要一个设置约束的动作,但我从未见过它.

zvo*_*kov 19

小菜一碟:

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)
             )
);
Run Code Online (Sandbox Code Playgroud)

  • Thaat工作很好.我发现唯一有用的是使用Arg <someObjectType> .Matches(y => y.property == whatever); 用于检查参数对象的值. (4认同)