ما هو Jest ولماذا هو مطلوب؟
\n\nJest هو إطار عمل قوي وشائع لاختبار كود جافا سكريبت، تم تطويره بواسطة شركة 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
تثبيت Jest
\n\nيتم تثبيت Jest عبر مدير الحزم npm أو yarn. بالنسبة لمشروع Node.js، هذه هي الطريقة القياسية.
# التثبيت كتبعية تطوير (موصى به)\nnpm install --save-dev jest\n\n# أو باستخدام yarn\nyarn add --dev jest\n\n\nبعد التثبيت، أضف سكريبتًا لتشغيل الاختبارات في ملف package.json الخاص بك:
{\n "scripts": {\n "test": "jest",\n "test:watch": "jest --watch", // تشغيل في وضع المراقبة\n "test:coverage": "jest --coverage" // تشغيل مع تقرير التغطية\n }\n}\n\n\nيمكنك الآن تشغيل الاختبارات باستخدام الأمر npm test.
بداية سريعة مع مثال كود
\n\nلنفترض أن لدينا وحدة بسيطة للعمليات الحسابية math.js:
// 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):
// 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\nnpm test\n\nسترى في وحدة التحكم تقريرًا عن اجتياز الاختبارات. إذا كان كل شيء صحيحًا، سيتم تمييز كلا الاختبارين باللون الأخضر ✓.
الطرق والوظائف الأساسية لـ Jest
\n\nيوفر Jest واجهة برمجة تطبيقات غنية. دعنا نستعرض 10 طرق رئيسية ستغطي 90% من مهامك.
\n\n1. test(name, fn, timeout) / it(name, fn, timeout)
\nما تفعله: تحدد اختبارًا جديدًا. test و it مترادفان. يمكنك استخدام أي منهما.
المعلمات:
\n- \n
name(string) — اسم الاختبار الذي سيظهر في التقرير. \n fn(function) — الدالة التي تحتوي على منطق الاختبار (التأكيدات). \n timeout(number, اختياري) — مهلة انتظار الاختبار بالميلي ثانية (الافتراضي 5000). \n
مثال:
\ntest('اثنان زائد اثنان يساوي أربعة', () => {\n expect(2 + 2).toBe(4);\n});\n\nit('السلسلة "hello" طولها 5', () => {\n expect('hello').