С Rhino Mocks, как заглушить метод, который использует ключевое слово params?

Я пытаюсь настроить ожидание в хранилище. Метод использует ключевое слово 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 ONLY при вызове ложного метода во время записи. Ожидается 2 аргумента, 7 определены.

Что не так с настройкой моего ожидания?

1 ответ

Решение

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);
Другие вопросы по тегам