الزاوي - كيفية إضافة الياسمين مخصص المباريات في وحدة اختبار

سواء في جافا سكريبت و typescript

الصورة من هوشع جورجسون على Unsplash

Jasmine هو إطار عمل BDD يوفر الكثير من المطابقات المدمجة لاختبار الوحدات. ولكن ، في بعض الأحيان يتعين علينا إنشاء أدوات مطابقة خاصة بنا لتسهيل جميع سيناريوهات الاختبار أو تقديم حالات اختبار أكثر قابلية للقراءة.

في هذا المنشور ، سنخضع لمطابقات الياسمين واستخدامها في كل من Javascript و Typescript.

  • ما هي الثقاب
  • المدمج في الثقاب وكيفية استخدامها
  • الرياضيات المخصصة وكيفية تحديدها
  • مثال المشروع في جافا سكريبت
  • مثال المشروع في الطباع
  • كيفية تعريف Custom Matchers في الزاوي
  • ملخص

ما هي المباريات

المطابقات ليست سوى مقارنة الدوال لمقارنة النتيجة المتوقعة والفعلية في مواصفات الاختبار.

هنا مثال على أحد المباريات. إذا نظرنا إلى السطر رقم 4 ، فإن toBe هو المطابق ويستخدم دائمًا مع توقع. يقوم فقط بمقارنة النتيجة الفعلية بالنتيجة المتوقعة وإرجاع قيمة منطقية.

المدمج في الثقاب وكيفية استخدامها

توفر ياسمين الكثير من المطابقات المدمجة ودعنا نرى بعضها هنا.

اقتراحات المطابق بواسطة VSCode

هنا هو كيف نحتاج إلى استخدامها.

الرياضيات المخصصة وكيفية تحديدها

معظم الوقت هذه المباريات المدمجة في الياسمين كافية. لكن ، في بعض الأحيان نحتاج إلى إنشاء أدوات مطابقة مخصصة.

توفر ياسمين وظيفة تسمى addMatchers حتى نتمكن من تمديد المطابقات مع وظائفنا المخصصة أو المعرفة من قبل المستخدم. يجب أن نضع هذا في وظيفة beforeEach.

دعونا نرى كيف نحدد المطابقة المخصصة هنا. كما نرى أدناه ، فإننا نعرّف toBeOlderThan الذي يقوم بإرجاع وظيفة المقارنة مع كائن النتيجة مع تمرير الحقول والرسالة. إذا فشل الاختبار ، فسيتم عرض الرسالة التي نقدمها هنا على وحدة التحكم.

مثال المشروع في جافا سكريبت

كتبت ريبو لهذا المنصب والتي يمكنك استخدامها لمتابعة طول. لاستخدامها ، انتقل الرابط أعلاه ، استنساخ وتثبيت.

// استنساخ الريبو
بوابة استنساخ https://github.com/bbachi/jasmine-tests.git
// تثبيت التبعيات والاختبار
تثبيت npm
اختبار npm

لدينا شخص لديه طرق getName و getAge و setName و setAge

نريد اختبار أعلاه فئة مع المطابقة المخصصة toBeOlderThan ، toBeLastNameEqualTo ، toBeFirstNameEqualTo. دعونا نحدد هذه المطابقات المخصصة في كائن منفصل كما هو موضح أدناه ونضيف هذا الكائن في دالة beforeEach.

فيما يلي بقية الملف حيث نضيف كائن المطابقات المخصص أعلاه إلى addMatchers ونختبر المشروع.

هنا هو الإخراج عند تشغيل اختبار npm.

خرج الاختبار

مثال المشروع في الطباع

كتبت repo لمشروع typescript التي يمكنك استخدامها لمتابعة طول. لاستخدامها ، انتقل الرابط أعلاه ، استنساخ وتثبيت.

// استنساخ المشروع
بوابة استنساخ https://github.com/bbachi/jasmine-tests-typescript.git
// تثبيت التبعيات وتشغيل الاختبار
تثبيت npm
اختبار npm

لدينا فئة شخص في الطباع مع أساليب getName و getAge و setName و setAge

نحتاج إلى تثبيت تعريفات النوع التالية نظرًا لكونها مكتوبة بالخطوط

"@ types / jasmine": "^ 3.3.12"،
"@ types / node": "^ 12.0.0" ،
"ts-node": "^ 8.1.0" ،
"typescript": "^ 3.4.5"

فيما يلي الطرق المخصصة في typescript في ملف منفصل ضمن src / test-assisters

يتعين علينا تحديد تعريفات النوع لهذه المطابقات المخصصة حيث يتم تمديدها وغير موجودة في ملف تعريف النوع من الياسمين وللمترجم البرمجي للصف الآلة للتعرّف.

يمكننا أن نعلن هذه تحت مساحة اسم الياسمين مثل أدناه من السطر رقم 4.

هنا هو الإخراج عند تشغيل اختبار npm.

خرج الاختبار

كيفية تعريف Custom Matchers في الزاوي

في الزاوي ، نقوم بتعريف machers المخصصة بنفس الطريقة. نحتاج إلى تعريف custom-matcher.ts لجميع المطابقات المخصصة و custom-matcher.d.ts لتعريفات النوع ضمن مجلد الاختبار.

مجلد منفصل للمطابقة المخصصة

قم باستيراد كل من custom-matcher.ts و custom-matcher.d.ts في ملف المواصفات كما هو موضح أدناه.

لقد أزلت كل الكود المتبقي من الملف أدناه للإيجاز.

هنا هو الإخراج عند تشغيل اختبار npm

خرج الاختبار

ملخص

  • المطابقات هي وظائف المقارنة التي تقارن النتيجة الفعلية والمتوقعة وإرجاع قيمة منطقية.
  • الياسمين هو إطار اختبار BDD يستخدمه الزاوي لاختبار الوحدة.
  • يجب دائمًا استخدام المطابقات بالتزامن مع توقع.
  • توفر ياسمين أدوات مطابقة مدمجة يمكن استخدامها مباشرة في المشروع.
  • يمكننا تمديد مطابقات الياسمين مع وظيفة تسمى addMatchers ().
  • يمكن كتابة مطابقات الياسمين المخصصة في كل من جافا سكريبت وطباعتها.
  • نحن بحاجة إلى الإعلان عن ملفات تعريف النوع للمطابقات المخصصة لبرنامج التحويل البرمجي للنسخ البرمجي لتجميعها.
  • يجب دائمًا استخدام Jasmine.addMatchers () داخل كتلة beforeEach ().

مصادر

  • تطابق مخصص Javescript Git repo
  • عرف المنضدة الطباع بوابة ريبو
  • تطابق مخصص الزاوي بوابة الريبو

شكرًا لك على القراءة وإذا وجدت هذا مفيدًا ، فيرجى تقديم التصفيق ومساعدة الآخرين في العثور عليه. يرجى متابعتي لمزيد من القصص المثيرة للاهتمام :)