9

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

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 个。

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

4

1 回答 1

10

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);
于 2012-07-10T05:59:43.193 回答