DelphiMocks:有什么方法可以让 When 子句匹配所有可能的输入吗?
DelphiMocks: Is there any way for a When clause to match every possible input?
我正在尝试设置一个模拟函数,它将 return 一个基于输入的值。据我所知,访问输入参数的唯一方法是通过 WillExecute
方法。但是,您必须指定一个 When
子句,并且该 When
子句希望我按以下方式定义输入值和方法:
aMock.Setup.WillExecute(function ...).When.myFunc(1);
我不得不说:每当调用 myFunc(1)
时调用那个匿名函数。我希望能够做同样的事情,但是在 myFunc
的每个可能参数上,在 myFunc
的参数中使用一种通配符标记(概念上):
aMock.Setup.WillExecute(function ...).When.myFunc(*);
这样的事情可能吗?基本上是一个 When
子句,它将匹配作为参数传递的任何值。
有人可能会想指出 WillReturnDefault
值,但是方法无法访问调用的实际参数,而 WillExecute
可以,所以我无法设置除常数值以外的任何值。
谢谢。
好的,我错过了一个事实,即有一个 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;
这样我就可以告诉 mock 在调用方法时执行传递的 anon,而不管它的参数如何,同时仍然提供对它们的访问。正是我要找的。结束问题。谢谢
这个也可以通过参数匹配来解决:
aMock.Setup.WillExecute(function ...).When.myFunc(It0.IsAny<Integer>);
我正在尝试设置一个模拟函数,它将 return 一个基于输入的值。据我所知,访问输入参数的唯一方法是通过 WillExecute
方法。但是,您必须指定一个 When
子句,并且该 When
子句希望我按以下方式定义输入值和方法:
aMock.Setup.WillExecute(function ...).When.myFunc(1);
我不得不说:每当调用 myFunc(1)
时调用那个匿名函数。我希望能够做同样的事情,但是在 myFunc
的每个可能参数上,在 myFunc
的参数中使用一种通配符标记(概念上):
aMock.Setup.WillExecute(function ...).When.myFunc(*);
这样的事情可能吗?基本上是一个 When
子句,它将匹配作为参数传递的任何值。
有人可能会想指出 WillReturnDefault
值,但是方法无法访问调用的实际参数,而 WillExecute
可以,所以我无法设置除常数值以外的任何值。
谢谢。
好的,我错过了一个事实,即有一个 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;
这样我就可以告诉 mock 在调用方法时执行传递的 anon,而不管它的参数如何,同时仍然提供对它们的访问。正是我要找的。结束问题。谢谢
这个也可以通过参数匹配来解决:
aMock.Setup.WillExecute(function ...).When.myFunc(It0.IsAny<Integer>);