इनपुट पैरामीटर को निर्दिष्ट करने के साथ मॉक मॉक विधि


133

Moq का उपयोग करके मेरे पास कुछ कोड हैं:

public class Invoice
{
    ...

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

इसलिए एक यूनिट टेस्ट में मैं इस तरीके का मजाक बनाने की कोशिश कर रहा हूं और इसे सच कर दूंगा

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

इस लाइन को लिखने के लिए वैसे भी है तो मुझे इनपुट को निर्दिष्ट करने की आवश्यकता नहीं है IsInFinancialYear। अर्थात। इसलिए कि यह कोड में नहीं है कि इनपुट पैरामीटर क्या है जो इसे पारित किया गया है, यह सच है?

जवाबों:


227

आप It.IsAny<T>()किसी भी मूल्य से मेल खाने के लिए उपयोग कर सकते हैं :

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

त्वरित आरंभ का मिलान तर्क अनुभाग देखें ।


5
मुझे लगता है कि यह उत्तर पुराना है, लेकिन क्या होगा यदि मेरे पास एक से अधिक सरल पैरामीटर हैं? क्या यह कहना संभव है कि "कुछ भी जहां प्रकार सभी मापदंडों के लिए फिट हैं"?
ब्रैंडन

6
@Brandon फिर आपके पास प्रत्येक पैरामीटर के लिए एक It.IsAny <प्रकार> () है जहां प्रकार जो भी प्रकार है वह परम है। यदि आप चाहते थे कि आप शायद एक सहायक फ़ंक्शन लिख सकें जो प्रतिबिंब के माध्यम से आपके लिए ऐसा करता है।
user441521


3
यहां अन्य टिप्पणियों से सहमत हों: किसी भी गैर-तुच्छ पद्धति के लिए यह लिखना एक बड़ी पीड़ा है।
जॉन हरग्रोव

किसी के पास कोई सहायक है जो ऐसा करता है? या आपको हर एक विधि के लिए लिखना होगा एक सहायक /
Meysam

18

It.IsAny<FinancialYearLookup>()किसी भी तर्क को स्वीकार करने के लिए प्रयोग करके देखें :

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.