在犀牛嘲笑中的部分参数匹配

时间:2009-12-01 07:04:10

标签: .net unit-testing rhino-mocks

在我的单元测试而不是IgnoreArguments中,我想在rhino mocks测试中使用一些参数的部分匹配。 怎么做?

谢谢, 约翰

2 个答案:

答案 0 :(得分:16)

// arrange
var fooStub = MockRepository.GenerateStub<IFoo>();

// act
fooStub.Bar("arg1", "arg2", 3);

// assert
fooStub.AssertWasCalled(
    x => x.Bar(
        Arg<string>.Is.Equal("arg1"), 
        Arg<string>.Is.Anything, 
        Arg<int>.Is.Equal(3))
);

答案 1 :(得分:6)

您可以使用constraints。您忽略传递给期望调用的参数,然后为每个参数添加显式约束。 Rhino Mocks文档中的一个例子:

Expect.Call(view.Ask(null,null)).IgnoreArguments().Constraints(
   Is.Anything(), 
   Is.TypeOf(typeof(SomeType))).Return(null);