اسمحوا لي أن أتحدث لكم بإيجاز عن الاختبار الزاوي.
كيف يمكنك تصميم تطبيقاتك الزاويّة لتكون قابلة للاختبار؟
كيف يمكنك تصميم الاختبارات للتطبيق الزاوي الخاص بك؟
كيف تقوم بتنفيذ الاختبارات والتأكد من أن
تطبيقك الزاوي يرضي جميع الاختبارات التي
كتبتها حتى أثناء تطوير تطبيقك الزاوي؟
الآن هذا هو المكان الذي أود أيضا أن أتحدث بإيجاز عن
تطوير اختبار مدفوعة من التطبيقات الزاوي.
ومن المثير للاهتمام، تم بناء الزاوي نفسه من الألف إلى الأعلى لتمكين الاختبار،
لتكون جزءًا من تطوير التطبيق الزاوي الخاص بك.
القوة الرئيسية وراء الزاوي ميسكو هيفري كان نفسه مهندس اختبار جوجل، وبالتالي،
تأثيره على تصميم الزاوي لتكون قابلة للاختبار من الألف
إلى الأعلى يمكن بسهولة أن ينظر إليه في جميع أنحاء الإطار.
لذلك، الزاوي نفسه كما كنت قد فهمت من المحاضرات والتمارين السابقة،
هو وحدات في الطبيعة.
وبالتالي فإن وحدات الزاوي جنبا إلى جنب مع المكونات
وقوالب ومن ثم الخدمات والأنابيب والتوجيهات،
يعني أن الزاوي يفسح المجال بسهولة ليتم اختبارها.
الآن، لأن التطبيق الزاوي نفسه يتكون من هذه الأجزاء المختلفة،
يمكنك اختبار كل من تلك الأجزاء في عزلة أولا
حتى قبل أن تصبح جزءا من التطبيق الزاوي بأكمله.
الجانب الثاني هو آلية حقن التبعية التي
تعني الروافع الزاوي لدعم الجمع بين الأجزاء المختلفة من التطبيق الزاوي الخاص بك نفسه أنه يمكنك بسهولة استبدال السخرية
لتلك التبعيات داخل
الأجزاء المختلفة من التطبيق الزاوي و إجراء الاختبارات.
لقد استخدمت كلمة وهمية في,
في الجملة السابقة سوف تأتي إلى فهم
أنه في مزيد من التفاصيل قليلا وأكثر من ذلك, الشرائح في وقت لاحق.
هذا هو المكان الذي نحتاج فيه إلى أن نكون
على دراية بنهج للقيام بتطوير التطبيقات يسمى التطوير القائم على الاختبار.
في التطوير المستند إلى الاختبار، كما يمكنك فهمه بالاسم نفسه،
يعني أنك تكتب أولاً اختبارات آلية
لجميع الوظائف التي ترغب في تنفيذها داخل التطبيق الخاص بك.
لذلك يأتي الاختبار أولاً،
وبعد ذلك تكتب رمز التطبيق الخاص بك من أجل اجتياز الاختبار.
لذلك يحدد الاختبار نفسه الوظائف التي تريد تنفيذها.
بعد ذلك تكتب التعليمات البرمجية لتنفيذ هذه الوظيفة.
نظرًا لأن لديك الاختبار بالفعل،
يمكنك اختبار لمعرفة ما إذا كان التنفيذ الذي تقوم به يفي بالاختبار أم لا.
الآن، بالطبع، بمجرد أن يفي إدراكك لوظائفك بالاختبار،
يمكنك دائمًا إعادة صياغة الشفرة للامتثال لمعايير هندسة البرمجيات الخاصة بهم.
ولكن حتى بعد ذلك،
يمكنك إعادة اختبار التعليمات البرمجية للتأكد من أنها لا تزال تلبي
تلك المتطلبات المحددة في
هذا الاختبار المحدد الذي تستخدمه في التطوير الذي يحركه الاختبار.
لذا في الواقع، فإن التطوير القائم على الاختبار هو
نهج قابل للتطبيق للغاية لتصميم
تطبيق جيد من الألف إلى الياء ليتم اختباره بشكل كامل.
الآن عندما نتحدث عن الاختبار،
يمكنك الاقتراب من الاختبار من عدة جوانب مختلفة.
أولاً وقبل كل شيء هو أنه إذا تم
تنفيذ التطبيق الخاص بك نفسه كقطع مختلفة،
مثل المكونات، مثل الخدمات، مثل التوجيهات،
مثل الأنابيب التي تقوم بتنفيذها داخل التطبيق الخاص بك.
وهذا يعني أنه يمكنك بسهولة اختبار كل من هذه الوحدات الفردية في عزلة.
لذلك هذا هو المكان الذي تأتي فيه اختبارات الوحدة إلى الواجهة.
اختبار الوحدة يعني أنك تختبر الوحدات الفردية من التعليمات البرمجية،
والتأكد من أن هذه الوحدة الفردية المعينة
تلبي الوظائف التي من المفترض
أن تدعمها، ويتم تنفيذ هذه الوظيفة والمنطق داخل تلك الشفرة بشكل صحيح.
الآن عزل الوحدة واختبارها من
المفيد جدًا معرفة معظم المشاكل الأولية داخل
شفرتك ثم إصلاحها حتى قبل دمج هذا التصحيح في الشفرة.
الآن بمجرد البدء في دمج هذه الأجزاء في الكل،
يصبح الأمر أكثر تعقيدًا لتكون قادرًا على إجراء اختبارات مفصلة لشفرتك.
لذلك، وبالتالي، تشكل اختبارات الوحدة المعزولة خط
الدفاع الأول ضد الأخطاء عندما تقوم بتطوير التطبيق الخاص بك،
وتحديدًا تطبيقك الزاوي.
الآن كما نرى مع الزاوي،
لدينا فصل واضح بين المكونات الزاوي و DOM نفسه.
حتى داخل مكون، على سبيل المثال، هناك،
يتم تنفيذ منطق المكون الخاص بك تماما في
التعليمات البرمجية typescript التي قمت بتنفيذها داخل مكون أن ملفات typescript.
ثم يتم التحكم في DOM نفسه من خلال
القالب الذي قمت بتصميمه للمكون الزاوي الخاص بك.
حتى بيتا نفسها، ترى الفصل الواضح بين الاثنين.
لذلك يمكنك ببساطة اختبار منطق
رمز المكون الخاص بك نفسه دون كتابة قالب عمودي.
ولكن بعد ذلك يمكنك أيضا النظر في الاثنين معا ومن ثم تقييم تلك الجوانب.
كما سنرى في التمرين الذي يتبع هذه المحاضرة،
سنقوم بالفعل بكل من هذين النهجين.
ليس ذلك فقط، حقيقة أن الزاوي يستخدم
حقن التبعية يعني أنه يمكنك حقن تبعيات وهمية داخل التطبيق الخاص بك.
عندما أقول وهمية، أعني، على سبيل المثال،
إذا كان المكون الخاص بك يعتمد على خدمة معينة
، فيمكنك دائمًا تنفيذ خدمة وهمية تحاكي سلوك الخدمة
ثم استبدالها في مكانها أثناء اختبار المكون بحيث يمكنك الحفاظ على
المكون الخاص بك مستقلاً عن كيفية تنفيذ الخدمة بالفعل.
طالما تم تصميم الواجهة بين المكون الخاص بك والخدمة بشكل صحيح
، يمكنك استبدال خدمة وهمية في مكانها ولا يزال اختبار المكون الخاص بك.
هناك، من وهمية،
يمكنك بسهولة التحكم في ما يتم توفيره للمكون من الخدمة.
لذلك يتيح لك هذا النهج إجراء اختبار الوحدة
بتفصيل كبير داخل التطبيق الزاوي الخاص بك.
هذا هو المكان الذي توفر أطر الاختبار مثل «الياسمين».
لذلك ما تقدمه ياسمين هو
إطار اختبار يحركه السلوك مصمم بالكامل في جافا سكريبت.
الآن، هذا الإطار ياسمين هو إطار عام
متاح لاختبار أي تطبيقات جافا سكريبت.
تعتمد الزاوي الياسمين كنهج لتحديد اختباراتنا للأجزاء الزاوية الأخرى
ومكوناتها والخدمات والجوانب المختلفة لتطبيقنا الزاوي.
الآن، داخل (ياسمين)، تستخدم (ياسمين) شيئين يساعدونك
واحد هو استخدام وظيفة «وصف».
تمكنك وظيفة «وصف» من تجميع مجموعة من الاختبارات ومن ثم
تنفيذ هذه الاختبارات معًا كمجموعة واحدة من الاختبارات.
عندما نكتب التعليمات البرمجية في التمرين سترى لي
أرفق مجموعة من الاختبارات داخل وظيفة وصف.
ثم نكتب رمزنا لدينا، رمز
الياسمين، لاختباراتنا الزاوي.
الآن ضمن هذه الوظائف «وصف» سوف تستخدم أيضا ما يسمى وظائف «it».
تمكنك وظائف «it» من تحديد
الاختبارات الفردية التي تريد تنفيذها على التطبيق الزاوي الخاص بك.
لذلك هذا هو المكان الذي سترى لي تحديد «it» ومن ثم تحديد أن
طبيعة الاختبار معين ومن ثم
تصميم رمز لهذا الاختبار معين مع وظيفة في «it».
لذلك ونحن تصميم التعليمات البرمجية في التمرين ابحث عن «وصف» و
«it» داخل تطبيقات الاختبار الزاوي الخاصة بك.
وبمجرد الانتهاء من تصميم الاختبار مع إطار ياسمين،
كارما هو أداة سطر الأوامر القائمة على جافا سكريبت
التي تمكنك من إجراء هذه الاختبارات تلقائيا.
الآن، كارما جنبا إلى جنب مع الياسمين،
تمكنك من إجراء اختبارات لتطبيق الزاوي الخاص بك.
الآن مع الكرمة، ما يدعمه الكرمة،
هو أنه يتيح لك تفرخ
خادم الويب الذي تقوم من خلاله بتحميل شفرة مصدر التطبيق الخاص بك
ومن ثم تستخدم الكرمة متصفح لإجراء الاختبارات الفعلية لوحدتك المختلفة.
لذلك هذا هو المكان الذي تقوم فيه بتشغيل اختباراتك باستخدام
الكرمة، سترى الكرمة تكديس المتصفح،
سواء كانت نافذة متصفح لمتصفح موجود أو
ما إذا كنت تستخدم شيئًا يسمى PhantomJS الذي يبدأ
متصفح وهمي خلف الكواليس لإجراء الاختبار.
لا يهم، ولكن كارما يستخدم
المتصفح في لحظة واحدة لتنفيذ اختبار التطبيق الزاوي الخاص بك.
كما سترى في التمرين التالي،
هذا هو المكان الذي إذا استمر أحد زملائك في الإصرار على أن تنفيذه
لجزء معين من تطبيقك الزاوي
صحيح ويحافظ على التأكيد على النقطة،
يمكنك دائمًا تصميم بعض الاختبارات باستخدام الياسمين و
الكرمة ومن ثم إجراء الاختبارات وإذا فشلت الاختبارات،
يمكنك دائما دحض حجتهم.
لذلك عندما يمكنك أن تستدير،
تستدير إلى زميلك وتقول،
لقد دهست كارما عقيدتك.
الآن، بالطبع، تطبيقاتك الزاويّة ليست خالية تمامًا
من مشاركة الإطار الزاوي نفسه.
لا يمكن تصميم المكون الخاص بك بنفسك دون
استخدام العديد من وظائف المكتبة التي يوفرها الزاوي لك،
على الرغم من أن بعض المنطق الأساسي يمكن اختباره بشكل مستقل عن الزاوي.
ما نسميه اختبارات منعزلة
ولكن، أكثر وأكثر،
وسوف تجد أنه ما لم كنت في،
تريد دعم الإطار الزاوي نفسه أنك
لن تكون قادرة على تنفيذ الكثير من اختبار
الأجزاء الزاوي الخاصة بك سواء كانت مكونات أو خدمات أو أنابيب أو توجيهات.
لذلك هذا هو المكان الذي توفر فيه أدوات
الاختبار الزاوي بيئة اختبار تمكنك من
إجراء اختبارات الوحدة داخل التطبيق الزاوي الخاص بك.
لذا فإن أدوات الاختبار الزاوي كما ستروني أستخدمه
في التمارين، في التمرين التالي،
ستوفر لنا تطبيقات معينة للوظائف الزاوي التي تستخدمها
في اختباراتك من أجل إعداد البيئة حيث يمكنك إجراء اختباراتهم.
لذلك، هذا هو المكان الذي التفاعل مع البيئة الزاوي،
بدلا من استخدام التطبيقات الزاوي الحقيقية،
وسوف تستخدم هذه المرافق الاختبار التي من شأنها أن توفر
وظائف كافية لتمكينك من إجراء الاختبارات.
وهذا هو المكان الذي تستبيد أننا سوف
تستخدم داخل التطبيق الزاوي لدينا هو جدا، مفيدة جدا.
و تستبيد أساسا يخلق وحدات اختبار الزاوي.
كما تدرك، المكونات الخاصة بك غير موجودة في حد ذاتها.
يجب تضمين المكونات الخاصة بك داخل وحدة NG.
الآن لا يمكنك ببساطة استخدام وحدة نغ القياسية لتنفيذ الاختبار الخاص بك.
حيث
يوفر لك TestBed، الذي يدعمه أداة الاختبار الزاوي، بيئة وحدة NG تمكنك من اختبار مكوناتها.
لذا، داخل TestBed،
سوف تستخدم شيئًا يسمى TestBed Create Component لإنشاء
مكون فردي ومثيل للمكون لإجراء الاختبارات على ذلك.
وعندما تقوم بذلك،
يتيح لك TestBed الوصول إلى شيء يسمى ComponentFixture،
فإن ComponentFixture هو شيء يوفر لك مقبضًا يتيح لك إحاطة
المكون الخاص بك بوظائف كافية بحيث يمكن اختبار المكون بنفسه.
يوفر لاعبا اساسيا الوصول إلى المكون نفسه ومن
ثم أيضا من خلال ذلك سوف نستخدم شيئا يسمى ديبوغليمنت.
سترى لي استخدام ذلك في التمرين الذي يلي.
يتيح لك DebugElement الوصول إلى DOM،
وهذا هو القالب المدعوم كجزء من المكون الخاص بك.
وبالتالي، يمكنك القيام بالتلاعبات على DOM مثل النقر على العناصر في DOM،
والحصول على الوصول إلى عنصر DOM ثم قراءة ما هو مغلق
داخل عناصر Dom تلك وهكذا والتي سوف تمكنك من إجراء الاختبارات.
الآن، قبل أن ننتقل إلى التمرين،
أريدك أن تكون على علم ببعض هذه الأشياء حتى عندما نواجهها في
التمرين نفسه سترى لماذا أستفيد من كل قطعة من هذه القطع المختلفة.