سؤال

لقد قرأت هذا: http://martinfowler.com/articles/mocksarentstubs.htmlمفاهيمي حول كعب الكعب والسخر الواضحة. أنا أفهم الحاجة إلى أطر العزلة مثل MOQ ، وحيدات القرن وأحب إنشاء كائن وهمية. كما يسخر ، المشاركة في التحديد الفعلي للتوقعات. ولكن لماذا نحتاج إلى هذه الأطر لإنشاء كعب. أفضل تفضيل طرح كوب تم إنشاؤه في اليد واستخدامه في تجهيزات مختلفة.

هل كانت مفيدة؟

المحلول

هل حاولت استخدام مكتبة مثل Rhino Mocks لمدة يوم أو يومين قبل أن تقرر أن كعبان الرصاص اليدوي هو خيار أفضل؟

chibacity: الفكرة الكاملة حول السخرية من المكتبات هي تجنب التطبيقات. إذا كنت بحاجة فقط إلى تعيين قيمة خاصية واحدة ، فأنا لا أريد إنشاء تطبيق كامل لواجهة. رمز الاتصال مثل

MyObj obj = MockRepository.GenerateStub<MyObj>();
obj.MyProperty = 33;

يبدو أبسط بكثير بالنسبة لي. ناهيك عن المواقف التي لا أحتاج فيها إلا إلى تمرير كعب غبي كمعلمة حيث لا يهمني ما يحدث لها (لذلك لا يلزم إعداد).

هذا لا يعني أنه لا ينبغي عليك طرح كعبك الخاص لسيناريوهات أكثر تعقيدًا ، ولكن في تجربتي ، تكون هذه الحالات نادرة.

توصيتي هي معرفة كيفية استخدام مكتبة سخر جيدة (مثل Rhino) بكل حيلها الصغيرة ، رهاني هو أنك ستتعلم قريبًا تقدير أسباب وجودها.

نصائح أخرى

بالمعنى الدقيق للكلمة ، لا ، أنت لا تفعل ذلك بحاجة إلى إطار العزلة لإنشاء كعب. في الواقع ، لدى Microsoft حتى إطار كوبس الذي - التي فقط يولد شبعات ، وليس السخرية.

لم أكتب أبدًا إطار عمل عزل بنفسي ، لكن يبدو أنه بمجرد أن تسخر من كائن في مكانه ، سيكون كعب الرعب نسيمًا. قد يكون هذا هو السبب الرئيسي في أن معظم/جميع أطر العزل تشمل كائنات كعب.

فيما يتعلق بالجملة الأخيرة ("أفضّل طرح كوب تم إنشاؤه يدويًا واستخدامه في تركيبات مختلفة") ، هل جربت ذلك بالفعل في أي مشروع كبير؟ بالتأكيد ، ربما يكون لديك واجهة مع طريقة واحدة تُرجع منطقتًا لاغية - عليك فقط كتابة ثلاثة كعبان لتلك الواجهة ، وهذا ليس سيئًا للغاية.

ولكن بمجرد أن تبدأ في النظر إلى العشرات من الواجهات والفئات التي تهدف إلى الضعف ، يصبح ببساطة فوضى لتتبع جميع كعبان مختلفة. إذا كنت تستخدم كل كعب في العديد من الاختبارات ، يمكنك بالتأكيد تبرير كتابة كعب يدوي ووضعه جانباً ؛ ولكن عندما تستخدم كوبًا واحدًا فقط أو مرتين ، فمن الأسهل بكثير الحفاظ عليه كصهر "مجهول" تم إنشاؤه مباشرة بواسطة الإطار ، من أجل البساطة.

بعد استخدام الأطر السخرية لفترة من الوقت ، وجدت أن تصميم الكود الخاص بي يأخذ مائلة مختلفة تمامًا. يبدو أن هذا المائل موجه أكثر بأسلوب تفاعل. بمعنى آخر ، أصبحت مهتمًا بالرسائل والسلوك أكثر من الحالة. تصبح أشيائي خدمات بدلاً من الكائنات الحكومية كما ستحدث عند استخدام Stubs. مع كعبان ، انتهى بي الأمر إلى تمرير الحالة إلى الأشياء الأخرى.

المشكلة بالنسبة لي تصبح أكثر من إنشاء طبقات التجريد. يجب أن أتساءل إلى أين يجب أن يتفاعل شيء ما على مستويات معينة. هذا يساعد في إنشاء تلك "اللحظة المسؤولة الأخيرة". لذلك انتهى بي الأمر بالأشياء التي تحتوي على منتجين ومستهلكين. وكل شيء بينهما هو مجرد قنوات الرسائل.

آمل أن يساعد هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top