اختبار TypeScript: نظرة عامة على الأطر والأدوات الحديثة
TypeScript هي مجموعة شاملة من JavaScript ذات كتابة صارمة، وتُستخدم بنشاط في تطوير الويب الحديث. ومع ذلك، فإن الكتابة بحد ذاتها لا تضمن عدم وجود أخطاء منطقية. لضمان جودة الكود، يلزم إجراء اختبارات دقيقة. في هذه المقالة، سنستعرض الأطر والأدوات الرئيسية لاختبار تطبيقات TypeScript، وميزاتها وأمثلة على استخدامها.
لماذا اختبار كود TypeScript؟
على الرغم من أن TypeScript يتحقق من الأنواع في مرحلة التجميع، إلا أنه لا يحمي من أخطاء وقت التشغيل، أو منطق الأعمال غير الصحيح، أو الانحدارات. تساعد الاختبارات في:
- اكتشاف الأخطاء قبل الوصول إلى الإنتاج؛
- توثيق سلوك الدوال والوحدات؛
- تبسيط إعادة هيكلة الكود وصيانته؛
- تسريع عملية التطوير من خلال أتمتة الفحوصات.
الأطر الشائعة لاختبار TypeScript
1. Jest — الخيار الشامل
Jest هو الإطار الأكثر شيوعًا، تم إنشاؤه بواسطة Facebook. وهو يدعم TypeScript "مباشرة" من خلال حزمة ts-jest أو إعداد Babel. يتضمن Jest مشغل اختبار، ومكتبة تأكيدات، ومحاكاة، وتقارير تغطية.
التثبيت والإعداد:
npm install --save-dev jest ts-jest @types/jestnpx ts-jest config:initمثال لاختبار وحدة لدالة جمع:
// sum.tsexport function sum(a: number, b: number): number { return a + b;}
// sum.test.tsimport { sum } from './sum';
describe('sum function', () => { test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
test('adds negative numbers', () => { expect(sum(-1, -2)).toBe(-3); });});2. Vitest — بديل سريع لمشاريع Vite
Vitest هو إطار حديث يستخدم Vite للبناء. وهو متوافق مع واجهة برمجة تطبيقات Jest، لكنه يعمل بشكل أسرع بكثير بفضل الدعم الأصلي لوحدات ES و HMR. وهو مثالي للمشاريع التي تستخدم Vue أو React أو Svelte.
مثال على الإعداد:
// vitest.config.tsimport { defineConfig } from 'vitest/config';
export default defineConfig({ test: { globals: true, environment: 'node', },});اختبار باستخدام describe/it:
import { describe, it, expect } from 'vitest';
function multiply(a: number, b: number): number { return a * b;}
describe('multiply', () => { it('should multiply two numbers', () => { expect(multiply(3, 4)).toBe(12); });});3. Mocha + Chai — المرونة الكلاسيكية
Mocha هو مشغل اختبار مرن، يُستخدم غالبًا مع مكتبة التأكيدات Chai. بالنسبة لـ TypeScript، ستحتاج إلى تثبيت ts-node و @types/mocha بشكل إضافي. يوفر Mocha العديد من الإضافات والتخصيصات.
مثال:
import { expect } from 'chai';
function greet(name: string): string { return `Hello, ${name}!`;}
describe('greet', () => { it('should return a greeting', () => { expect(greet('Alex')).to.equal('Hello, Alex!'); });});أدوات الاختبار الشامل (E2E)
4. Playwright — أداة E2E حديثة
Playwright من Microsoft يدعم TypeScript بشكل أصلي، ويسمح باختبار Chromium و Firefox و WebKit. يمكنه التعامل مع طلبات الشبكة، ومحاكاة الأجهزة المحمولة، والتقاط لقطات الشاشة.
التثبيت:
npm init playwright@latestمثال لاختبار التحقق من عنوان الصفحة:
import { test, expect } from '@playwright/test';