我试图设置一个模拟函数,它将返回一个基于输入的值。访问我所知道的输入参数的唯一方法是通过WillExecute
方法。但是,您必须指定When
子句,并且When
子句希望我按以下方式定义输入值以及方法:
aMock.Setup.WillExecute(function ...).When.myFunc(1);
我有点不得不说:只要调用myFunc(1)
,就调用匿名函数。我希望能够做同样的事情,但是在myFunc
的每个可能参数上,在参数myFunc
(概念上)中使用一种通配符标记:
aMock.Setup.WillExecute(function ...).When.myFunc(*);
这样的事情可能吗?基本上是When
子句,它将匹配作为参数传递的任何值。
有人可能会想要指出WillReturnDefault
值,但是方法无法访问调用的实际参数,因为WillExecute
会这样做,所以我不能够除了一个恒定的值之外,设置任何东西。
感谢。
答案 0 :(得分:0)
好的,我错过了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,无论其参数如何,同时仍然提供对它们的访问。正是我在寻找什么。结束问题。感谢。
答案 1 :(得分:0)
这也可以通过使用参数匹配来解决:
aMock.Setup.WillExecute(function ...).When.myFunc(It0.IsAny<Integer>);