بدائل الاختبار والشبكة
البديل المتساهل أكثر من اللازم يحوّل مجموعة اختباراتك إلى آلة تنتج ثقة غير مبررة
بدائل الاختبار والشبكة
صفحة الفوترة لديك مغطاة بعشرين اختبارًا ناجحًا. وفي بيئة الإنتاج تعرض NaN € منذ ثلاثة أيام. تفتح الاختبارات فتجدها تحاكي عميل HTTP باستخدام vi.mock، ويعيد البديل القيمة { montant: 1290 }. أما الخدمة الحقيقية فتعيد { montant: "1290.00", devise: "EUR" } منذ عملية ترحيل أُجريت في الواجهة الخلفية الشهر الماضي. اختباراتك لم تتحقق قط من العقد الفعلي: لقد تحققت فقط من أن شيفرتك تعمل مع البيانات التي اخترعتها لها.
هذه هي المخاطرة الأساسية لكل بديل، وهي مخاطرة بنيوية: أنت تستبدل تبعية بنسخة مبسطة منها، وبذلك تحذف من نطاق الاختبار الجزء الذي لا تتحكم فيه تحديدًا. فالسؤال ليس «هل ينبغي المحاكاة؟» بل «عند أي مستوى نقطع؟»، والجواب في الغالب: عند أدنى مستوى ممكن. فاعتراض الطلبات على مستوى HTTP يُبقي عميلك وعملية التسلسل (serialization) ومعالجة الأخطاء وتحليل الاستجابة تعمل كلها، أي كل الشيفرة التي تستقر فيها الأخطاء فعلًا. أما محاكاة الوحدة التي تستدعي الواجهة البرمجية فتحذف كل ذلك دفعة واحدة.
محاكاة وحدة: متى، وبأي ثمن
يستبدل vi.mock وحدة كاملة في جميع ملفات الاختبار الجاري. ويُرفع هذا الاستبدال إلى أعلى الملف قبل عبارات الاستيراد، وهذا يفسر قيدًا كثيرًا ما يُساء فهمه: لا يمكن لدالة المصنع (factory) الممرَّرة إلى vi.mock أن تشير إلى متغير مُعلَن في موضع لاحق.
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش