C# 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>() { <...>

我正在设置Moq,如:

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)=>{
//…为简洁起见省略
});