C# Moq设置抛出异常
我正在设置Moq,如:C# Moq设置抛出异常,c#,moq,C#,Moq,我正在设置Moq,如: mockCommand.Setup(foo => foo.Post<Foo, Response>(It.IsAny<Foo>())) .Returns((Foo m) => { if (m . . . .) { return new <Response>() { <...>
mockCommand.Setup(foo => foo.Post<Foo, Response>(It.IsAny<Foo>()))
.Returns((Foo m) =>
{
if (m . . . .)
{
return new <Response>()
{
<...>
};
}
else
{
return new <Response>()
{
<...>
};
}
});
mockCommand.Setup(foo=>foo.Post(It.IsAny()))
.返回((Foo m)=>
{
如果(m…)
{
返回新的()
{
};
}
其他的
{
返回新的()
{
};
}
});
但我有一个例外:
System.ArgumentException:无效回调。具有2个参数的方法上的安装程序无法使用不同数量的参数(1)调用回调
通用方法定义为:
TResponse Post<TRequest, TResponse>(TRequest request, params string[] query)
treresponse Post(TRequest请求,参数字符串[]查询)
我能想到的唯一一件事是,不知何故,因为我有条件地返回响应,它不知何故混淆了Moq,所以它抛出了异常。Ideas?例外情况是,设置中忽略了参数,
返回
回调委托
包括要模拟的成员的所有参数
mockCommand
.Setup(foo => foo.Post<Foo, Response>(It.IsAny<Foo>(), It.IsAny<string[]>()))
.Returns((Foo m, string[] q) => {
//...omitted for brevity
});
mock命令
.Setup(foo=>foo.Post(It.IsAny(),It.IsAny())
.Returns((Foo m,string[]q)=>{
//…为简洁起见省略
});