C# Moq可以忽略传递给函数的参数数量吗?
我正在尝试删除我的通用存储库。我有一个名为SingleOrDefaultIncluding的方法,如下所示: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
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时设置?我的回答(就目前而言)试图设置所有呼叫。我觉得有点愚蠢。我想我试过了,但我一定是把括号放错地方了。工作起来很有魅力。非常感谢。