Я хочу заглушить функцию, которая получает 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, чтобы не определять значение для каждого дополнительного параметра?
Если нет настройки, что лучше сделать для этого случая (лучшая практика, шаблон и т. д.)?
Спасибо.