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 に答える