Зависимость возвращаемого значения заглушки RhinoMock от параметра

#c# #rhino-mocks

#c# #rhino-издевается

Вопрос:

Можно ли установить возвращаемое значение «по умолчанию» для заглушки RhinoMock?

Например: у меня есть метод, который принимает int значение от 1-175 и возвращает bool:

 internal bool myFunction(int number)
 

Я хочу заглушить это в Rhino Mock, чтобы оно возвращалось только true в том случае, если значение number равно 2 или 3, и false в противном случае:

 myClass.Stub(x => x.MyFunction(2)).Return(true);
myClass.Stub(x => x.MyFunction(3)).Return(true);
// return false otherwise
 

Однако, если я передам любое другое значение int в своем тесте (например, 100), функция также вернет true . Я хочу, чтобы он возвращал false во всех случаях, кроме двух, которые я перечислил выше. Как я могу это сделать?

Комментарии:

1. один из способов if(number == 2 || number == 3) { myClass.Stub(...);} и т. Д. … Может быть лучшим способом (отсюда и этот комментарий против ответа)

Ответ №1:

Используется Do для предоставления реализации метода доступа к входным параметрам

 myClass.Stub(_ => _.MyFunction(Arg<int>.Is.Anything))
    .Do((Func<int, bool>)(number => {
        return number == 2 || number == 3;
    }));