73. أساسيات الاختبار: الإعداد و TestBed
يُعد الاختبار أمراً حيوياً لضمان جودة التطبيق وسهولة صيانته. يستخدم Angular Jasmine (لإطار عمل الاختبار) و Karma (لمُشغّل الاختبار).
أنواع الاختبارات
- اختبارات الوحدات (Unit Tests): تركز على وحدات فردية ومعزولة من التعليمات البرمجية (المكونات، الخدمات، الأنابيب، إلخ).
- اختبارات التكامل (Integration Tests): تتحقق من كيفية تفاعل الوحدات (على سبيل المثال، مكون يستخدم خدمة).
- اختبارات النهاية إلى النهاية (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
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)، مما يضمن حالة نظيفة لكل حالة اختبار.