2011-10-19 30 views
91

我使用起订量在测试一些代码:起订量但不指定输入参数模拟方法

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。

回答

161

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

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

见快速启动的Matching Arguments部分。

+1

感谢您的联系! – AnonyMouse

+4

我意识到这个答案是旧的,但如果我有多个简单的参数呢?是否有可能只是说“任何类型适合所有参数”? – Brandon

+1

@Brandon然后你有一个It.IsAny ()为每个参数,其中类型是参数是什么类型。如果你想要,你可以写一个帮助函数,通过反射为你做这件事。 – user441521

16

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

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