الاختبار 2 دقيقة للقراءة 943 مشاهدات

اختبار تطبيقات React: اختبارات الوحدة والتكامل والشامل

أتقن اختبار React مع Jest وReact Testing Library وCypress. تعلّم أفضل ممارسات اختبارات الوحدة والتكامل والشامل.

Software testing

اختبار تطبيقات React

ابنِ ثقةً في شيفرتك عبر استراتيجيات اختبار شاملة.

اختبار الوحدة باستخدام Jest

// utils.test.js
import { formatCurrency, calculateTotal } from './utils';

describe('formatCurrency', () => {
    it('formats positive numbers', () => {
        expect(formatCurrency(1234.56)).toBe('$1,234.56');
    });

    it('handles zero', () => {
        expect(formatCurrency(0)).toBe('$0.00');
    });
});

اختبار المكوّنات باستخدام Testing Library

import { render, screen, fireEvent } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import Counter from './Counter';

test('increments counter on click', async () => {
    render(<Counter />);

    expect(screen.getByText('Count: 0')).toBeInTheDocument();

    await userEvent.click(screen.getByRole('button', { name: /increment/i }));

    expect(screen.getByText('Count: 1')).toBeInTheDocument();
});

اختبار العمليات غير المتزامنة

import { render, screen, waitFor } from '@testing-library/react';

test('loads and displays users', async () => {
    render(<UserList />);

    // Wait for loading to finish
    await waitFor(() => {
        expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
    });

    // Check users are displayed
    expect(screen.getByText('John Doe')).toBeInTheDocument();
});

الاختبار الشامل باستخدام Cypress

// cypress/e2e/login.cy.js
describe('Login Flow', () => {
    it('successfully logs in', () => {
        cy.visit('/login');
        cy.get('[data-testid="email"]').type('user@example.com');
        cy.get('[data-testid="password"]').type('password123');
        cy.get('button[type="submit"]').click();
        cy.url().should('include', '/dashboard');
        cy.contains('Welcome back').should('be.visible');
    });
});

اسعَ إلى هرم اختبار متوازن: اختبارات وحدة كثيرة، واختبارات تكامل أقل، وأقل قدر من الاختبارات الشاملة.

الوسوم
مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.