سؤال

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

System.InvalidOperationException: Previous method 'SuchAndSuch.ToString();'  
requires a return value or an exception to throw.

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

أنا متأكد من أن السبب وراء ذلك هو أن المصحح يستدعي ToString () على الكائنات لعرضها في السكان المحليين ونوافذ السكان الأخرى. ولكن نظرا لأن الفحص في وضع السجل في وضع السجلات تعتبر مكالمة إلى Tostring () أن تكون إعدادا للتوقعات التي ليست بعد ذلك بشكل صحيح تماما. من الواضح أن هذا يحدث إلا بسخرات جزئية على فصول ملموسة. السخرية ضد واجهات لا تظهر هذا السلوك.

لديك أشخاص آخرين يركضون في هذه المسألة؟ هل هناك أي علاج بسيط؟ هل لديك أطر أخرى مثل موك أو Typemock لها هذه المشكلة؟

شكرا،

~ جوستين

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

المحلول

أستطيع أن أتذكر وجود مشكلة مماثلة مع NMOCK منذ سنوات عديدة. في الأساس، تحدث هذه المشكلة بالضبط لأن المصحح يستدعي ويعرض الخصائص باستخدام ToString الطريقة (ما لم تستخدم debuggerdisplayattribute أو مماثلة).

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

قد ترغب أيضا في الابتعاد عن آلية التسجيل / التشغيل من أكشن الأسماط والبدء في استخدام أحدث وأفضل بكثير بناء الجملة لامدا.

يستخدم موك بناء جملة لامدا (تقريبا) حصريا، ولم أجد أبدا مثل هذه المشكلات معها - ولكن مرة أخرى، أنا لا أخوض الكثير من هذه الأيام، حيث أصبحت اختبارات الوحدات بديلا عن التصحيح.

علاج آخر هو ببساطة إخفاء autos. و السكان المحليين نوافذ المصحح.

نصائح أخرى

كما اقترح مارك، يجب أن تختفي هذه المشكلة إذا توقفت عن استخدام نهج تسجيل الدخول المسجل والبدء في استخدام كاربين مع نهج AAA الموصى به (ترتيب، ACT، تأكيد) بدلا من ذلك.

لقد حاولت شرح الفرق وكيفية القيام بكلتا كليهما مع حيد القرن في هذا مشاركة مدونة.

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