ইনপুট প্যারামিটার নির্দিষ্ট করে দিয়ে মোখ মোক পদ্ধতি


133

মোখ ব্যবহার করে একটি পরীক্ষায় আমার কাছে কিছু কোড রয়েছে:

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
@ ব্র্যান্ডন তারপরে প্রতিটি প্যারামিটারের জন্য আপনার কাছে এটি রয়েছে sআইএসএএনআই <টাইপ> () যেখানে পরম যা টাইপ টাইপ হয়। যদি আপনি চান আপনি সম্ভবত একটি সহায়ক ফাংশন লিখতে পারেন যা প্রতিচ্ছবি এর মাধ্যমে এটি আপনার জন্য করে।
ব্যবহারকারী 441521


3
এখানে অন্যান্য মন্তব্যের সাথে একমত: যে কোনও অ-তুচ্ছ পদ্ধতিতে এটি টাইপ করা বড় ব্যথা।
জন হারগ্রোভ

কারও কাছে এমন কোনও সহায়ক রয়েছে যা এটি করে? অথবা আপনি প্রতিটি একক পদ্ধতির জন্য লিখতে হবে একটি সাহায্যকারী /
Meysam

18

It.IsAny<FinancialYearLookup>()যে কোনও যুক্তি গ্রহণ করার জন্য ব্যবহার করার চেষ্টা করুন :

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.