使用Rhino Mocks如何存根使用params关键字的方法?

时间:2012-07-09 22:13:30

标签: c# mocking rhino-mocks stub rhino-mocks-3.5

我正在尝试在存储库上设置期望。该方法使用params keyword

string GetById(int key, params string[] args);

我已经设定的期望:

var resourceRepo = MockRepository.GenerateMock<IResourceRepository>();
resourceRepo.Expect(r => r.GetById(
    Arg<int>.Is.Equal(123),
    Arg<string>.Is.Equal("Name"),
    Arg<string>.Is.Equal("Super"),
    Arg<string>.Is.Equal("Mario"),
    Arg<string>.Is.Equal("No"),
    Arg<string>.Is.Equal("Yes"),
    Arg<string>.Is.Equal("Maybe")))
    .Return(String.Empty);

抛出此异常:

  

测试方法   XYZ抛出异常:System.InvalidOperationException:   录制时,只在模拟方法调用中使用Arg。预计2个论点,7   已定义。

我期望的设定有什么问题?

1 个答案:

答案 0 :(得分:9)

params只是一个数组:

var resourceRepo = MockRepository.GenerateMock<IResourceRepository>();
resourceRepo
  .Expect(r => r.GetById(
    Arg<int>.Is.Equal(123),
    Arg<string[]>.List.ContainsAll(new[]
                                   {
                                       "Name",
                                       "Super",
                                       "Mario",
                                       "No",
                                       "Yes",
                                       "Maybe"
                                   })))
  .Return(String.Empty);