تحسين وتنظيم الاختبارات باستخدام Mocha و Chai

في عملية تطوير البرمجيات ، يعد تحسين الاختبارات وتنظيمها أمرًا بالغ الأهمية لضمان الدقة والكفاءة في مرحلة الاختبار. في هذه المقالة ، سوف نستكشف كيفية تحسين الاختبارات وتنظيمها باستخدام Mocha و Chai Node.js.

يؤدي تحسين الاختبارات وتنظيمها إلى تحسين عملية الاختبار وتقليل الأخطاء وتعزيز موثوقية تطبيقك. من خلال تنفيذ هذه التقنيات ، يمكنك إدارة الاختبارات وتنفيذها بشكل فعال في مشروع Node.js الخاص بك باستخدام Mocha و Chai.

 

منظمة الاختبار:

  • تصنيف الاختبارات حسب الوظيفة: يؤدي تنظيم الاختبارات بناءً على الوظائف إلى تسهيل إدارة وتحديد أهداف الاختبار لكل ميزة محددة في مشروعك.
  • استخدام وصف متداخل: استخدام وصف متداخل لإنشاء بنية هرمية لتنظيم الاختبارات. يساعد هذا في الحفاظ على هيكل واضح وقابل للقراءة لمجموعة الاختبار الخاصة بك.

 

استخدام الخطافات لأداء مهام الإعداد والتفكيك قبل الاختبارات وبعدها

  • استخدام الخطافات: Mocha يوفر خطافات مثل before ، after ، beforeEach ولإجراء afterEach عمليات ما قبل الاختبار وبعده. يساعد استخدام الخطافات في توفير الوقت وتحسين الأداء العام للاختبارات.
  • الاستخدام skip والتوجيهات only: skip يسمح لك التوجيه بتخطي الاختبارات غير الضرورية أثناء التطوير. يتيح التوجيه only إجراء اختبارات محددة ، وهو أمر مفيد عندما تحتاج فقط إلى اختبار جزء صغير من قاعدة التعليمات البرمجية.

مثال:

describe('Calculator',() => {  
  beforeEach(() => {  
    // Set up data for all tests within this describe block  
  });  
  
  afterEach(() => {  
    // Clean up after running all tests within this describe block  
  });  
  
  describe('Addition',() => {  
    it('should return the correct sum',() => {  
      // Test addition operation  
    });  
  
    it('should handle negative numbers',() => {  
      // Test addition with negative numbers  
    });  
  });  
  
  describe('Subtraction',() => {  
    it('should return the correct difference',() => {  
      // Test subtraction operation  
    });  
  
    it('should handle subtracting a larger number from a smaller number',() => {  
      // Test subtraction when subtracting a larger number from a smaller number  
    });  
  });  
});  

 

تجميع الاختبارات واستخدام كتل وصف للمؤسسة

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

فيما يلي مثال على استخدام describe الكتل لتنظيم الاختبارات المتعلقة بكائن Calculator ما:

const { expect } = require('chai');  
  
class Calculator {  
  add(a, b) {  
    return a + b;  
  }  
  
  subtract(a, b) {  
    return a- b;  
  }  
  
  multiply(a, b) {  
    return a * b;  
  }  
  
  divide(a, b) {  
    if(b === 0) {  
      throw new Error('Cannot divide by zero');  
    }  
    return a / b;  
  }  
}  
  
describe('Calculator',() => {  
  let calculator;  
  
  beforeEach(() => {  
    calculator = new Calculator();  
  });  
  
  describe('add()',() => {  
    it('should return the sum of two numbers',() => {  
      const result = calculator.add(5, 3);  
      expect(result).to.equal(8);  
    });  
  });  
  
  describe('subtract()',() => {  
    it('should return the difference of two numbers',() => {  
      const result = calculator.subtract(5, 3);  
      expect(result).to.equal(2);  
    });  
  });  
  
  describe('multiply()',() => {  
    it('should return the product of two numbers',() => {  
      const result = calculator.multiply(5, 3);  
      expect(result).to.equal(15);  
    });  
  });  
  
  describe('divide()',() => {  
    it('should return the quotient of two numbers',() => {  
      const result = calculator.divide(6, 3);  
      expect(result).to.equal(2);  
    });  
  
    it('should throw an error when dividing by zero',() => {  
      expect(() => calculator.divide(6, 0)).to.throw('Cannot divide by zero');  
    });  
  });  
});  

في المثال أعلاه ، نستخدم describe الكتل لتجميع الاختبارات المتعلقة بكل طريقة من طرق Calculator الكائن. نستخدم أيضًا beforeEach كتلة لإنشاء Calculator كائن جديد قبل تشغيل كل اختبار.

باستخدام describe الكتل ، يمكننا تنظيم الاختبارات وتجميعها بطريقة واضحة ومنظمة ، مما يجعل من السهل فهم وإدارة كود الاختبار.

 

تخصيص عملية الاختبار مع الإضافات والمراسلين

عند استخدام أطر اختبار مثل Mocha و Chai ، يمكننا تخصيص عملية الاختبار باستخدام المكونات الإضافية والمراسلين. فيما يلي بعض الأمثلة على كيفية استخدام المكونات الإضافية والمراسلين لتخصيص عملية الاختبار:

  1. Mocha الإضافات : Mocha تدعم استخدام الإضافات لتوسيع ميزاتها. على سبيل المثال ، يمكنك استخدامه mocha-parallel-tests لتشغيل الاختبارات بشكل متزامن ، مما قد يؤدي إلى تسريع التنفيذ. يمكنك تثبيت هذا البرنامج المساعد عبر npm ثم استخدامه في Mocha ملف التكوين الخاص بك.

  2. Chai الإضافات : Chai يوفر أيضًا مكونات إضافية لتوسيع ميزاته. على سبيل المثال ، يمكنك استخدامه chai-http لاختبار طلبات HTTP في اختباراتك. وبالمثل ، تقوم بتثبيت هذا المكون الإضافي عبر npm ثم استخدامه في ملفات الاختبار الخاصة بك.

  3. المراسلون : Mocha يدعم أنواع مختلفة من المراسلين لعرض نتائج الاختبار. المراسل الشائع هو mocha-reporter الذي يوفر تنسيقات تقارير مختلفة مثل المواصفات والنقطة وغير ذلك. يمكنك تحديد المراسل الذي تريد استخدامه من خلال خيارات سطر الأوامر أو في ملف التكوين.

على سبيل المثال ، لاستخدام mocha-reporter المراسل ، يمكنك تشغيل الأمر التالي:

mocha --reporter mocha-reporter tests/*.js

سيؤدي هذا إلى إجراء الاختبارات في tests الدليل وعرض النتائج باستخدام mocha-reporter المراسل.

باستخدام المكونات الإضافية والمراسلين ، يمكنك تخصيص ميزات وتوسيع نطاقها Mocha وتناسب Chai احتياجات الاختبار الخاصة بمشروعك.