0%
الكائنات البديلة للاختبار باستخدام Mockito

الكائنات البديلة Mockito

الكائن المحاكي، والجاسوس، والتحقق من التفاعلات، والاختبار الذي يختبر نفسه.

10-15 دقيقة

الكائنات البديلة للاختبار باستخدام Mockito

إليك اختبارًا ينجح، ويُحتسب ضمن نسبة التغطية، ولا يكشف أي شيء إطلاقًا:

@Test
void le_service_retourne_le_client() {
    when(depot.parId(7L)).thenReturn(new Client(7L, "Dupont"));

    Client client = service.trouver(7L);

    assertThat(client.nom()).isEqualTo("Dupont");
}

لقد صرّحتَ بأن المستودع يُرجع «Dupont»، ثم تحققتَ من أن النتيجة هي «Dupont». السلوك الوحيد الذي جرى اختباره هو سلوك Mockito نفسه. استبدل تنفيذ service.trouver بالسطر return depot.parId(id); مع حذف كل المنطق التجاري الذي كان يحتويه، فسيبقى الاختبار أخضر. هذا هو العيب الأكثر شيوعًا في المجموعات الاختبارية التي تُفرط في استخدام الكائنات البديلة، ولا يمكن كشفه بعدّاد التغطية الذي سيعرض بكل فخر نسبة 100% على هذه الدالة.

Mockito أداة ممتازة، لكنها تُستخدم افتراضيًا بطريقة خاطئة. فالانعكاس الشائع «صنف واحد قيد الاختبار، وكل المتعاونين معه محاكَون» يُنتج اختبارات تصف البنية الداخلية للشيفرة بدلًا من سلوكها: فكل نقل للمسؤولية بين صنفين يكسر عشرة اختبارات دون أن يكون أي خلل قد أُدخل. يضع هذا الدرس قاعدة بسيطة لتقرير متى يكون استخدام الكائن البديل مبرَّرًا، ويبيّن كيف تتحقق من التفاعلات دون أن تحبس نفسك في زاوية ضيقة.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!