Jest لجافا سكريبت (Node.js): دليل كامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Jest ولماذا هو مطلوب؟

\n\n

Jest هو إطار عمل قوي وشائع لاختبار كود جافا سكريبت، تم تطويره بواسطة شركة Facebook (Meta). يوفر كل ما هو ضروري لكتابة الاختبارات الوحدوية والتكاملية والشاملة "مباشرة من الصندوق": أدوات لإنشاء التأكيدات (assertions)، والمحاكاة (mocking)، والتجسس (spies)، والمؤقتات، بالإضافة إلى أداة مدمجة لقياس تغطية الكود (code coverage).

\n\n

يُستخدم Jest على نطاق واسع في نظام React البيئي، ولكنه مناسب تمامًا لاختبار أي كود جافا سكريبت، بما في ذلك التطبيقات على Node.js و Angular و Vue.js والأطر الأخرى.

\n\n

لماذا نحتاج Jest؟

\n
    \n
  • أتمتة التحقق: يسمح بالتحقق بسرعة وموثوقية من أن الكود الخاص بك يعمل بشكل صحيح بعد كل تغيير.
  • \n
  • منع الانحدار: تساعد الاختبارات في التأكد من أن الكود الجديد لم يعطل الوظائف القديمة.
  • \n
  • التوثيق: الاختبارات المكتوبة جيدًا تعمل كتوثيق حي، يوضح كيفية عمل كل دالة أو وحدة.
  • \n
  • الثقة في إعادة الهيكلة: وجود الاختبارات يسمح بإعادة كتابة وتحسين الكود بأمان.
  • \n
  • سهولة الإعداد: يعمل Jest "مباشرة من الصندوق" دون الحاجة إلى تكوين معقد.
  • \n
\n\n

تثبيت Jest

\n\n

يتم تثبيت Jest عبر مدير الحزم npm أو yarn. بالنسبة لمشروع Node.js، هذه هي الطريقة القياسية.

\n\n
# التثبيت كتبعية تطوير (موصى به)\nnpm install --save-dev jest\n\n# أو باستخدام yarn\nyarn add --dev jest\n
\n\n

بعد التثبيت، أضف سكريبتًا لتشغيل الاختبارات في ملف package.json الخاص بك:

\n\n
{\n  "scripts": {\n    "test": "jest",\n    "test:watch": "jest --watch", // تشغيل في وضع المراقبة\n    "test:coverage": "jest --coverage" // تشغيل مع تقرير التغطية\n  }\n}\n
\n\n

يمكنك الآن تشغيل الاختبارات باستخدام الأمر npm test.

\n\n

بداية سريعة مع مثال كود

\n\n

لنفترض أن لدينا وحدة بسيطة للعمليات الحسابية math.js:

\n\n
// math.js\nfunction add(a, b) {\n  return a + b;\n}\n\nfunction subtract(a, b) {\n  return a - b;\n}\n\nmodule.exports = { add, subtract };\n
\n\n

لننشئ ملف اختبار math.test.js (يبحث Jest افتراضيًا عن الملفات ذات الامتداد .test.js أو .spec.js):

\n\n
// math.test.js\nconst { add, subtract } = require('./math');\n\ntest('adds 1 + 2 to equal 3', () => {\n  expect(add(1, 2)).toBe(3);\n});\n\ntest('subtracts 5 - 3 to equal 2', () => {\n  expect(subtract(5, 3)).toBe(2);\n});\n
\n\n

قم بتشغيل الاختبارات:

\n\n
npm test
\n\n

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

\n\n

الطرق والوظائف الأساسية لـ Jest

\n\n

يوفر Jest واجهة برمجة تطبيقات غنية. دعنا نستعرض 10 طرق رئيسية ستغطي 90% من مهامك.

\n\n

1. test(name, fn, timeout) / it(name, fn, timeout)

\n

ما تفعله: تحدد اختبارًا جديدًا. test و it مترادفان. يمكنك استخدام أي منهما.

\n

المعلمات:

\n
    \n
  • name (string) — اسم الاختبار الذي سيظهر في التقرير.
  • \n
  • fn (function) — الدالة التي تحتوي على منطق الاختبار (التأكيدات).
  • \n
  • timeout (number, اختياري) — مهلة انتظار الاختبار بالميلي ثانية (الافتراضي 5000).
  • \n
\n

مثال:

\n
test('اثنان زائد اثنان يساوي أربعة', () => {\n  expect(2 + 2).toBe(4);\n});\n\nit('السلسلة "hello" طولها 5', () => {\n  expect('hello').                    

توصيات