没有指定输入参数的 Moq 模拟方法

我在一个使用 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。也就是说。所以它不会在代码中输入参数是什么它会返回真无论传递给它什么?

94493 次浏览

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

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

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

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);