我在使用Moq的测试中有一些代码:
public class Invoice
{
...
public bool IsInFinancialYear(FinancialYearLookup financialYearLookup)
{
return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate;
}
...
}
所以在单元测试中我试图模拟这个方法并让它返回true
mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true);
无论如何都要写这一行,所以我不必指定IsInFinancialYear
的输入。即。所以在代码中输入参数不是什么,它将返回true传递给它的什么?
答案 0 :(得分:191)
您可以使用It.IsAny<T>()
匹配任何值:
mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true);
请参阅快速入门的Matching Arguments部分。
答案 1 :(得分:16)
尝试使用It.IsAny<FinancialYearLookup>()
接受任何参数:
mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true);
答案 2 :(得分:4)
您可以尝试以下操作:
https://7pass.wordpress.com/2014/05/20/moq-setup-and-ignore-all-arguments/
允许:
mock
.SetupIgnoreArgs(x => x.Method(null, null, null)
.Return(value);