2011-10-19 27 views
91

Tôi có một số mã trong một thử nghiệm sử dụng Moq:Moq phương pháp giả với tham số ra cách xác định đầu vào

public class Invoice 
{ 
    ... 

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

Vì vậy, trong một thử nghiệm đơn vị tôi đang cố gắng để thử phương pháp này và làm cho nó trở thành sự thật

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

Có cách nào để viết dòng này vì vậy tôi không phải chỉ định đầu vào là IsInFinancialYear. I E. Vì vậy, nó không có trong mã những gì các tham số đầu vào là nó sẽ trả về true bất cứ điều gì được truyền cho nó?

Trả lời

161

Bạn có thể sử dụng It.IsAny<T>() để phù hợp với bất kỳ giá trị:

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

Xem phần Matching Arguments của sự khởi đầu nhanh chóng.

+1

Cảm ơn các liên kết! – AnonyMouse

+4

Tôi nhận ra câu trả lời này là cũ nhưng nếu tôi có nhiều tham số đơn giản thì sao? Có thể chỉ nói "Bất cứ điều gì mà các loại phù hợp cho tất cả các thông số"? – Brandon

+1

@Brandon Sau đó, bạn có một It.IsAny () cho mỗi tham số trong đó loại là bất kỳ loại tham số nào. Nếu bạn muốn bạn có thể có thể viết một hàm trợ giúp thực hiện điều này cho bạn thông qua sự phản ánh. – user441521

16

Hãy thử sử dụng It.IsAny<FinancialYearLookup>() chấp nhận bất kỳ đối số:

mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true); 
Các vấn đề liên quan