مكتبة السخرية الأكثر شعبية وودية لـ .NET
var mock = new Mock <ilovethislibrary> () ؛ // رائع! لا سجل/إعادة غرابة؟! سائدا Mock.Setup (Library => library.downloadexists ("2.0.0.0")). Returns (true) ؛ // استخدم خاصية الكائن الموجودة على النقطة للحصول على مرجع إلى الكائن // تنفيذ Ilovethislibrary ، ثم يمارسها عن طريق الاتصال // طرق على ذلك ilovethislibrary lovable = mock.object ؛ Bool Download = lovable.downloadexists ("2.0.0.0") ؛ // تحقق من أن الطريقة المعطاة تم استدعاؤها بالفعل بالقيمة المتوقعة على الأقل مرة واحدة Mock.Verify (Library => library.downloadexists ("2.0.0.0") ، times.Atrimstonce ()) ؛
MOQ هي أيضًا المكتبة الأولى والوحيدة حتى الآن لتزويد LINQ بالسخرية ، بحيث يمكن تحقيق نفس السلوك أعلاه بإيجاز أكثر:
ilovethislibrary lovable = mock.of <ilovethislibrary> (l => l.downloadexists ("2.0.0.0") == true) ؛ // تمرين المثيل الذي تم إرجاعه بواسطة Mock.Of عن طريق الاتصال على أساليبها ... Bool Download = lovable.downloadexists ("2.0.0.0") ؛ // ببساطة أؤكد الحالة التي تم إرجاعها: Assert.true (تنزيل) ؛ // إذا كنت تريد تجاوز اختبار الدولة وتريد ذلك // تحقق من التفاعل الوهمي بدلاً من ذلك ... mock.get (محبوب).
يمكنك التفكير في LINQ يسخر من "من عالم السخرية ، أعطني شخصًا يطابق سلوكه هذا التعبير".
تحقق من Quickstart لمزيد من الأمثلة!
MOQ (وضوحا "Mock-you" أو فقط "Mock") هي المكتبة السخرية الوحيدة لـ .NET تم تطويرها من نقطة الصفر للاستفادة الكاملة من أشجار التعبير .NET LINQ وتعبيرات Lambda ، مما يجعلها أكثر الإنتاجية ، آمنة من النوع و مكتبة السخرية الصديقة للاحتفالات المتاحة. ويدعم واجهات السخرية وكذلك الفصول. واجهة برمجة التطبيقات الخاصة بها بسيطة للغاية ومباشرة ، ولا تتطلب أي معرفة أو خبرة سابقة مع المفاهيم الساخرة.
تم إنشاء المكتبة بشكل رئيسي للمطورين الذين لا يستخدمون حاليًا أي مكتبة يسخر (أو يشعرون بالإشراف على تعقيدات بعض التنفيذ الآخر) ، والذين عادة ما يكتبون يدويًا من السخرية الخاصة بهم (مع "خيال" أكثر أو أقل). يبدو أن معظم المطورين في هذه الحالة يكونان عمليًا ويلتزمون بـ TDD (أو كلاسيكي). إنه نتيجة للشعور بأن حاجز الدخول من مكتبات أخرى يسخر من ارتفاع بعض الشيء ، ومن الممكن أن يكون النهج الأكثر بساطة وأكثر خفيفة الوزن وأنيقة. يحقق MOQ كل هذا من خلال الاستفادة الكاملة من ميزات لغة C# و VB الأنيقة والمدمجة المعروفة مجتمعة باسم LINQ (فهي ليست فقط للاستعلامات ، كما يوحي الاختصار).
تم تصميم MOQ لتكون طريقة عملية للغاية وغير مزعجة ومباشرة لإعداد التبعيات بسرعة لاختباراتك. يساعد تصميم API الخاص به حتى المستخدمين المبتدئين على الوقوع في "حفرة النجاح" وتجنب أكثر سوء استخدام/انتهاكات السخرية الشائعة.
عندما تم تصورها ، كانت المكتبة الساخرة الوحيدة هي التي تعارض نهج السجل/إعادة التشغيل المعمم وغير البديهي إلى حد ما (خاصة للمبتدئين) من جميع المكتبات الأخرى (وربما كان ذلك جيدًا ؛)).
إن عدم استخدام السجل/إعادة التشغيل يعني أيضًا أنه من السهل نقل التوقعات الشائعة إلى طريقة إعداد التثبيت وحتى تجاوز هذه التوقعات عند الحاجة في اختبار وحدة محدد.
يمكنك قراءة المزيد حول "لماذا" ومشاهدة بعض لقطات الشاشة الرائعة في مدونة KZU.
شاهد أمثلة QuickStart الخاصة بنا للتعرف على واجهة برمجة التطبيقات البسيطة للغاية والتثبيت من Nuget.
اقرأ عن الإعلان في مدونة KZU. احصل على بعض الخلفية عن مكتب المكتبات الوهمية من Scott Hanselman.
تم تطوير MOQ في الأصل بواسطة Clarius و Manas و Instedd.
يستخدم MOQ Castle DynamicProxy داخليًا كآلية اعتراض لتمكين السخرية.
يقدم MOQ الميزات التالية:
قوي من النوع: لا توجد سلاسل للتوقعات ، ولا توجد قيم أو قيود إرجاع من نوع الكائن
غير مسبوق مقابل Intellisense Integration: كل شيء يدعم كامل مقابل Intellisense ، من تحديد التوقعات ، إلى تحديد وسيطات استدعاء الطريقة ، وقيم الإرجاع ، إلخ.
لا يوجد سجل/إعادة تشغيل التعبير للتعلم. ما عليك سوى إنشاء ناهيك ، وإعداده ، واستخدامه ، والتحقق من المكالمات اختياريًا (لا يجوز لك التحقق من السخرية عندما تعمل كصهر فقط ، أو عند إجراء المزيد من الاختبارات الكلاسيكية القائمة على الحالة عن طريق التحقق من القيم التي تم إرجاعها من الكائن قيد الاختبار )
منحنى التعلم المنخفض للغاية نتيجة للنقاط الثلاث السابقة. بالنسبة للجزء الأكبر ، لا تحتاج حتى إلى قراءة الوثائق.
التحكم الحبيبي في سلوك وهمية مع تعداد بسيط للسلوك (لا حاجة لمعرفة ما هو الفرق النظري بين وهمية ، كعب ، وهمية ، وهمية ديناميكية ، وما إلى ذلك)
يسخر من كل من الواجهات والفصول
التوقعات تجاوز: يمكن وضع التوقعات الافتراضية في إعداد المباراة ، والتجاوز حسب الحاجة في الاختبارات
تمرير حجج مُنشئ للصفوف الساخرة
اعتراض ورفع الأحداث على السخرية
الدعم البديهي للحجج out/ref
نحن نقدر بعمق أي ردود فعل قد تكون لديك! لا تتردد في المشاركة في الدردشة ، أو الإبلاغ عن مشكلة في تعقب القضية.
تعرف على المزيد حول رعاة Github