العودة إلى الدورة

أساسيات الاختبار: الإعداد و TestBed

مطور Angular الشامل: من الصفر إلى الاحتراف

73. أساسيات الاختبار: الإعداد و TestBed

يُعد الاختبار أمراً حيوياً لضمان جودة التطبيق وسهولة صيانته. يستخدم Angular Jasmine (لإطار عمل الاختبار) و Karma (لمُشغّل الاختبار).

أنواع الاختبارات

  1. اختبارات الوحدات (Unit Tests): تركز على وحدات فردية ومعزولة من التعليمات البرمجية (المكونات، الخدمات، الأنابيب، إلخ).
  2. اختبارات التكامل (Integration Tests): تتحقق من كيفية تفاعل الوحدات (على سبيل المثال، مكون يستخدم خدمة).
  3. اختبارات النهاية إلى النهاية (End-to-End - E2E Tests): تحاكي سير عمل المستخدم الحقيقي في المتصفح.

Angular TestBed

TestBed هي الأداة الأكثر أهمية لاختبار وحدات مكونات وخدمات Angular. إنها تنشئ بيئة وحدة اختبار تعكس NgModule.

typescript import { TestBed } from '@angular/core/testing'; import { ComponentFixture } from '@angular/core/testing';

// نحن نختبر AppComponent import { AppComponent } from './app.component';

describe('AppComponent', () => {

let fixture: ComponentFixture; // يمثل مضيف المكون let component: AppComponent; // مثيل فئة المكون

beforeEach(async () => { // تهيئة بيئة وحدة الاختبار await TestBed.configureTestingModule({ // الإعلان عن المكونات والتوجيهات والأنابيب اللازمة للاختبار declarations: [AppComponent], // توفير الخدمات اللازمة (غالباً ما تكون وهمية) providers: [], // استيراد الوحدات اللازمة (على سبيل المثال، RouterTestingModule) imports: [] }).compileComponents(); // تجميع قوالب المكون (ضروري لـ templateUrl)

// إنشاء مثيل المكون ومضيفه
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;

});

it('should create the app', () => { expect(component).toBeTruthy(); });

it(should have the title 'my-app', () => { expect(component.title).toEqual('my-app'); });

});

يتم تشغيل beforeEach قبل كل اختبار (it)، مما يضمن حالة نظيفة لكل حالة اختبار.