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

时间:2011-10-19 19:34:15

标签: c# mocking 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的输入。即。所以在代码中输入参数不是什么,它将返回true传递给它的什么?

3 个答案:

答案 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);
相关问题