DelphiMocks: есть ли способ, когда предложение When соответствует каждому возможному вводу?
Я пытаюсь настроить фиктивную функцию, которая будет возвращать значение, основанное на вводе. Единственный способ получить доступ к входному параметру, о котором я знаю, - это через WillExecute
метод. Тем не менее, вы должны указать When
пункт, и что When
предложение ожидает от меня определения входного значения вместе с методом следующим образом:
aMock.Setup.WillExecute(function ...).When.myFunc(1);
Я вынужден сказать: вызывать эту анонимную функцию всякий раз, когда myFunc(1)
называется. Я хотел бы иметь возможность сделать то же самое, но по каждому возможному параметру myFunc
с каким-то подстановочным маркером в параметре myFunc
(концептуально):
aMock.Setup.WillExecute(function ...).When.myFunc(*);
Возможно ли что-то подобное? В основном When
предложение, которое будет соответствовать любому значению, переданному в качестве параметра.
Кто-то может испытать желание указать на WillReturnDefault
значение, но метод не имеет доступа к фактическим параметрам вызова, так как WillExecute
делает, поэтому я не смогу установить ничего, кроме постоянного значения.
Благодарю.
2 ответа
Хорошо, я пропустил тот факт, что была перегруженная версия WillExecute, которая будет делать именно это:
//Will exedute the func when called with the specified parameters
function WillExecute(const func : TExecuteFunc) : IWhen<T>;overload;
//will always execute the func no matter what parameters are specified.
procedure WillExecute(const AMethodName : string; const func : TExecuteFunc);overload;
Таким образом, я могу сказать макету выполнять переданный anon всякий раз, когда вызывается метод, независимо от его параметров, при этом предоставляя доступ к ним. Именно то, что я искал. Закрытие вопроса. Благодарю.
Это также можно решить с помощью сопоставления параметров:
aMock.Setup.WillExecute(function ...).When.myFunc(It0.IsAny<Integer>);