الدرس 12: الاختبارات، mocks، وseams
عندما يستدعي المنطق الساعة أو خدمة البريد أو قاعدة البيانات مباشرة — يعتمد كل اختبار على العالم الحقيقي: بطيء، هش، وأحياناً يفشل عند منتصف الليل فقط. في هذا الدرس نفتح seam: واجهة صغيرة نحقن من خلالها بديلاً (fake)، ونحصل على اختبارات تعمل بسرعة وتعطي دائماً النتيجة نفسها.
الـseam مثل مقبس الكهرباء في الجدار: يمكنك توصيل جهاز حقيقي أو جهاز اختبار — والجدار نفسه لا يتغير أبداً.
- تصميم قابل للاختبار (seams وmocks)
- إخفاء التبعيات الحقيقية خلف واجهات صغيرة، بحيث تستطيع الاختبارات حقن بدائل والتحكم في كل مدخل.
- seam — نقطة استبدال لتبعية
- مكان في الكود يمكن فيه استبدال السلوك من الخارج — على سبيل المثال معامل في الباني من نوع واجهة — دون تعديل المنطق.
- fake — تنفيذ مزيف للاختبارات
- تنفيذ مكتوب يدوياً لواجهة (مثل FakeClock) يتحكم الاختبار في سلوكه بالكامل — مما يجعل النتائج حتمية.