تحسين وتنظيم الاختبارات باستخدام الموكا والتشاي

في عملية تطوير البرمجيات ، يعد تحسين الاختبارات وتنظيمها أمرًا بالغ الأهمية لضمان الدقة والكفاءة في مرحلة الاختبار. في هذه المقالة ، سوف نستكشف كيفية تحسين وتنظيم الاختبارات باستخدام 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 وتوسيعها لتلائم احتياجات الاختبار لمشروعك.