Mocks وFakes والتغطية
عزل الوحدات وقياس ما تختبرونه
Mocks وFakes والتغطية درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
اعزلوا الوحدة
ينبغي لاختبار الوحدة أن يتحقق من جزء واحد بمعزل عن غيره. تجعل قواعد البيانات أو الشبكات الحقيقية الاختبارات بطيئة وغير مستقرة، لذلك نستبدلها. 🔌
بدائل الاختبار
يقف test double بدلًا من اعتماد حقيقي. وتُعد mock و fake و stub الأنواع الشائعة التي يمكنكم استخدامها.
ما هو fake؟
يحتوي fake على تنفيذ عملي لكنه مبسّط، مثل قائمة داخل الذاكرة تحل محل قاعدة بيانات حقيقية.
class FakeRepo implements Repo {
final _items = <Item>[];
}ما هو mock؟
يسجّل mock كيفية استدعائه، حتى تتمكنوا من التحقق من التفاعلات، لا من القيم النهائية فحسب.
حزمة mockito
تنشئ حزمة mockito كائنات mock لكم. أضيفوا annotation إلى النوع المطلوب وشغّلوا build_runner لإنشائه.
@GenerateMocks([Repo])
import 'repo_test.mocks.dart';إنشاء stubs باستخدام when
استخدموا when لبرمجة mock: عند استدعاء هذه الطريقة، أعيدوا هذه القيمة، وبذلك يصبح السلوك متوقعًا.
when(repo.find(1))
.thenReturn(Item('a'));التحقق من الاستدعاءات
استخدموا verify لتأكيد استدعاء طريقة ما، وعدد مرات استدعائها، وإثبات أن كودكم تواصل مع اعتماده بطريقة صحيحة.
verify(repo.save(any)).called(1);إنشاء stubs غير متزامنة
بالنسبة إلى الطرق التي تعيد Future، برمجوها باستخدام thenAnswer حتى يتمكن mock من إعادة نتيجة غير متزامنة.
when(api.load())
.thenAnswer((_) async => 'ok');مقارنة mock و fake
استخدموا fake عندما تحتاجون إلى سلوك واقعي، واستخدموا mock عندما يهمكم معرفة الاستدعاءات التي حدثت.
معنى التغطية
تقيس coverage الأسطر التي تُشغّلها اختباراتكم فعليًا. وتشير التغطية العالية إلى الشمول، لكنها لا تضمن الصحة أبدًا.
إنشاء تقرير التغطية
شغّلوا الاختبارات مع جمع coverage، ثم حوّلوا البيانات إلى تقرير يمكنكم قراءته أو رفعه إلى أداة.
dart test --coverage=coverageتحقق سريع
أي بديل يسجّل الاستدعاءات حتى تتمكنوا من التحقق منها؟
مراجعة
عزلتم الوحدات باستخدام fakes و mocks، وأنشأتم stubs باستخدام when، وتحققتم من الاستدعاءات، وقستم coverage. اختبارات سريعة ومركزة وموثوقة. 🎯
تعلم Dart مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «Mocks وFakes والتغطية» مجاني؟
نعم — نص درس «Mocks وFakes والتغطية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «Mocks وFakes والتغطية»؟
عزل الوحدات وقياس ما تختبرونه تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «Mocks وFakes والتغطية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أول اختبار لكم مع test وexpect
- group وsetUp وtearDown
- اختبار الشيفرة غير المتزامنة وStreams
- Mocks وFakes والتغطية