С 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);