AssertWasCalled在犀牛嘲笑中

时间:2009-07-01 16:45:33

标签: c# unit-testing rhino-mocks

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

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

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

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

2 个答案:

答案 0 :(得分: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)
             )
);

答案 1 :(得分:4)

查看documentation for constraints

我怀疑你想要:

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);