Sobes.tech
Junior

Meséljen a projektum tesztelési tapasztalatairól.

sobes.tech MI

Válasz az MI-től

Projektjeimben többféle tesztelési típust alkalmaztam a frontend minőségének biztosítása érdekében:

  1. Egységtesztelés: Jest és React Testing Library segítségével az egyes komponensek, funkciók és modulok izolálására és ellenőrzésére. Ez segít gyorsan felismerni a logikai hibákat kis, független kódrészekben.

    // Egységteszt példa a Button komponenshez Jest és React Testing Library segítségével
    import { render, screen } from '@testing-library/react';
    import Button from './Button';
    
    test('helyesen jeleníti meg a gombot', () => {
      render(<Button>Click Me</Button>);
      const buttonElement = screen.getByText(/Click Me/i);
      expect(buttonElement).toBeInTheDocument();
    });
    
  2. Integrációs tesztelés: Több komponens vagy modul közötti interakciók ellenőrzésére. Ez biztosítja, hogy a rendszer különböző részei helyesen működnek együtt. Szintén a React Testing Library-t használtam ehhez.

    // Integrációs teszt példa egy űrlap és a submit gomb esetében
    import { render, screen, fireEvent } from '@testing-library/react';
    import Form from './Form';
    
    test('az űrlap elküldése a helyes adatokkal hívja az onSubmit-et', () => {
      const mockSubmit = jest.fn();
      render(<Form onSubmit={mockSubmit} />);
    
      const input = screen.getByLabelText(/Username:/i);
      const submitButton = screen.getByRole('button', { name: /Submit/i });
    
      fireEvent.change(input, { target: { value: 'testuser' } });
      fireEvent.click(submitButton);
    
      expect(mockSubmit).toHaveBeenCalledWith({ username: 'testuser' });
    });
    
  3. E2E tesztelés: Néhány projektben Cypress vagy Playwright segítségével teszteltem a felhasználói forgatókönyveket a kezdettől a végéig valóban a böngészőben. Ez segít ellenőrizni, hogy az alkalmazás összességében úgy működik, ahogy várható a végfelhasználó számára.

    // E2E teszt példa Cypress-sel
    // cypress/integration/todo.spec.js
    describe('Todo alkalmazás', () => {
      it('új teendőt ad hozzá', () => {
        cy.visit('/'); // Az alkalmazás oldalára lépés
    
        cy.get('.new-todo').type('Buy milk{enter}'); // Szöveg beírása és Enter lenyomása
    
        cy.get('.todo-list li')
          .should('have.length', 1) // Elem számának ellenőrzése
          .first()
          .should('have.text', 'Buy milk'); // Az első elem szövegének ellenőrzése
      });
    });
    
  4. Snapshot tesztelés: Jest segítségével a komponens szerkezetének rögzítésére és az esetleges nem szándékos változások felismerésére (pl. refaktorálás után).

    // Snapshot teszt példa a Card komponenshez Jest-tel
    import renderer from 'react-test-renderer';
    import Card from './Card';
    
    test('A Card helyesen jelenik meg', () => {
      const tree = renderer
        .create(<Card title="Test Title">Test Content</Card>)
        .toJSON();
      expect(tree).toMatchSnapshot(); // Összehasonlítás a korábban mentett snapshot-tal
    });
    

Úgy vélem, a tesztelés fontos része a fejlesztési folyamatnak, mivel segít fenntartani a kód minőségét, megkönnyíti a refaktorálást és csökkenti a hibák előfordulásának valószínűségét a gyártásban. Gyakran írom a teszteket az új funkciók fejlesztése közben vagy hibák javítása előtt (TDD megközelítés, ahol alkalmazható).