0

我正在尝试设置一个模拟函数,该函数将返回一个基于输入的值。我知道的访问输入参数的唯一方法是通过WillExecute方法。但是,您必须指定一个When子句,并且该When子句希望我以以下方式定义一个输入值以及方法:

aMock.Setup.WillExecute(function ...).When.myFunc(1);

我有点被迫说:无论何时调用该匿名函数myFunc(1)。我希望能够做同样的事情,但是在每个可能的参数 to 上,在参数 to (从概念上)myFunc中使用一种通配符标记:myFunc

aMock.Setup.WillExecute(function ...).When.myFunc(*);

这样的事情可能吗?基本上是一个When匹配作为参数传递的任何值的子句。

有人可能会想指出该WillReturnDefault值,但方法无法访问调用的实际参数WillExecute,因此我将无法设置除常量值之外的任何内容。

谢谢。

4

2 回答 2

1

好的,我错过了这样一个事实,即 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;

通过这种方式,我可以告诉模拟在调用方法时执行传递的匿名,而不管它的参数如何,同时仍然提供对它们的访问。正是我想要的。结束问题。谢谢。

于 2016-01-26T15:27:36.713 回答
1

这也可以通过使用参数匹配来解决:

aMock.Setup.WillExecute(function ...).When.myFunc(It0.IsAny<Integer>);
于 2017-03-19T02:34:15.573 回答