Я хочу заглушить функцию, которая получает 2 логических параметра.Первый обязателен, а второй необязательный.Если я пытаюсь отправить Arg.Is.Anything первому, но без информации для второго, я получаю сообщение об ошибке:
System.InvalidOperationException: При использовании Arg все аргументы должны быть определены с использованием Arg.Is, Arg.Text, Arg.List, Arg.Ref или Arg.Out.Ожидается 2 аргумента, 1 определено.
Вот пример моего класса для заглушки:
public interface IOptionalParameterTester
{
bool IsValid(bool mustCheck, bool checkInDatabase = true);
}
public class OptionalParameterTester : IOptionalParameterTester
{
public bool IsValid(bool mustCheck, bool checkInDatabase = true)
{
if (checkInDatabase)
return true;
else
return false;
}
}
А вот пример теста:
[Test]
public void ValidateProducerTest()
{
IOptionalParameterTester optionalParameter = MockRepository.GenerateStub<IOptionalParameterTester>();
optionalParameter.Stub(x => x.IsValid(Arg<bool>.Is.Anything)).Return(true);
}
В этом случае, если я хочу, чтобы тест прошел без ошибок, я должен определить ту же информацию, что и для первого (Arg.Is.Anything), или конкретное логическое значение, например true или false.
ЕслиЯ установил что-то кроме Arg.Is.Anything для первого параметра, у меня нет ошибок.
Это ошибка?
Могу ли я установить опцию в RhinoMock, чтобы не 'Вам нужно определить значение для каждого необязательного параметра?
Если нет настройки, есть ли лучший способ справиться с этим делом (передовой опыт, шаблон и т. д.)?
Спасибо.