Moq模拟方法没有指定input参数

我在使用Moq的testing中有一些代码:

public class Invoice { ... public bool IsInFinancialYear(FinancialYearLookup financialYearLookup) { return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate; } ... } 

所以在unit testing中,我试图嘲笑这个方法,并使其返回true

 mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true); 

有没有反正写这一行,所以我不必指定inputIsInFinancialYear 。 即。 所以它没有在代码中input参数是什么,它将返回真正的任何传递给它?

您可以使用It.IsAny<T>()来匹配任何值:

 mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true); 

请参阅快速入门的匹配参数部分。

尝试使用It.IsAny<FinancialYearLookup>()接受任何参数:

 mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true); 

您可以尝试以下方法:

https://7pass.wordpress.com/2014/05/20/moq-setup-and-ignore-all-arguments/

允许:

 mock .SetupIgnoreArgs(x => x.Method(null, null, null) .Return(value);