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>);
Другие вопросы по тегам