C# Moq可以忽略传递给函数的参数数量吗?

C# Moq可以忽略传递给函数的参数数量吗?,c#,moq,C#,Moq,我正在尝试删除我的通用存储库。我有一个名为SingleOrDefaultIncluding的方法,如下所示: T SingleOrDefaultIncluding(Expression<Func<T, bool>> wherePredicate, params Expression<Func<T, object>>[] includes); _agreementRepositoryMock.Setup(m => m.SingleOrDef

我正在尝试删除我的通用存储库。我有一个名为SingleOrDefaultIncluding的方法,如下所示:

T SingleOrDefaultIncluding(Expression<Func<T, bool>> wherePredicate, params Expression<Func<T, object>>[] includes);
 _agreementRepositoryMock.Setup(m => m.SingleOrDefaultIncluding
                                                (
                                                    It.IsAny<Expression<Func<Agreement, bool>>>(),
                                                    It.IsAny<Expression<Func<Agreement, object>>>(),
                                                    It.IsAny<Expression<Func<Agreement, object>>>()
                                                )
            ).Returns(AgreementMocks.GetOne());
T singleOrDefaulting(表达式wherePredicate,参数表达式[]包括);
现在在我的单元测试中,我设置了如下Moq:

T SingleOrDefaultIncluding(Expression<Func<T, bool>> wherePredicate, params Expression<Func<T, object>>[] includes);
 _agreementRepositoryMock.Setup(m => m.SingleOrDefaultIncluding
                                                (
                                                    It.IsAny<Expression<Func<Agreement, bool>>>(),
                                                    It.IsAny<Expression<Func<Agreement, object>>>(),
                                                    It.IsAny<Expression<Func<Agreement, object>>>()
                                                )
            ).Returns(AgreementMocks.GetOne());
\u agreementRepositoryMock.Setup(m=>m.SingleOrDefaultIncluding
(
It.IsAny(),
It.IsAny(),
It.IsAny()
)
).Returns(AgreementMocks.GetOne());

我是否可以指定传递给SingleOrDefaultion的任何参数(包括它)都应该返回我的协议?为了实现这一点,我必须确保准确地传递我正在测试的方法中的3个参数。或者我可以通过某种方式将数组传递给Moq吗?

可以使用不“展开”参数的表单?比如:

_agreementRepositoryMock.Setup(m => m.SingleOrDefaultIncluding
  (
    It.IsAny<Expression<Func<Agreement, bool>>>(),
    It.IsAny<Expression<Func<Agreement, object>>[]>()
  )
  ).Returns(AgreementMocks.GetOne());

使用
It.Is
而不是
It.IsAny

对不起,我的答案可能是错的。是否仅在阵列长度为2时设置?我的回答(就目前而言)试图设置所有呼叫。我觉得有点愚蠢。我想我试过了,但我一定是把括号放错地方了。工作起来很有魅力。非常感谢。