Test unitaires avec Jest

J'ai ajouté un test unitaire au menu pour vérifier que le logo est présent.

J'ai ajouté aria-label dans mon composant logo

constLogo = ({ size }) => (
<divclassName="Logo"aria-label="Logo">
Et ajouté mon test dans index.test.js du menu (containers > menu)
import { fireEvent, render, screen } from "@testing-library/react";
import Menu from "./index";


describe("When Menu is created", () => {
    it("a list of mandatories links and the logo are displayed", async () => {
        render(<Menu />);
        await screen.findByText("Nos services");
        await screen.findByText("Nos réalisations");
        await screen.findByText("Notre équipe");
        await screen.findByText("Contact");
    });


    describe("and a click is triggered on contact button", () => {
        it("document location href changes", async () => {
            render(<Menu />);
            fireEvent(
                await screen.findByText("Contact"),
                new MouseEvent("click", {
                    cancelable: true,
                    bubbles: true,
                })
            );
            expect(window.document.location.hash).toEqual("#contact");
        });
    });


    describe("and a logo is created", () => {
        it("logo is visible", () => {
            render(<Menu />);
            const logo = screen.getByLabelText("Logo");
            expect(logo).toBeInTheDocument();
        });
    });
});

 

 

Pour expliquer :
Jest est un framework de test JavaScript.

Il est installé avec node-modules.

Le nommage du fichier

Pour que Jest reconnaisse vos  fichiers de tests, on ajoute .test à la création de votre fichier.

Décomposition d'un fichier test

Je commence par importer le code du fichier .

describe permet de créer un bloc de tests (ou “Test Suite”, en anglais) et permet de renseigner le type de test que vous réalisez.

it contient le message indiquant le résultat attendu.

expect() va vous permettre d'exécuter la fonction et de stocker la valeur de retour de cette dernière.

toBeDefined() ou toEqual() est le test en lui-même.
C’est ce qu’on appelle le “matcher” côté test.
Autrement dit, Jest va tester si le résultat de expect() correspond au “matcher”.

Le matcher

Le principe d’un matcher est de comparer le résultat retourné par la fonction testée avec le résultat attendu.

Exemple de matcher : toBe - toBeDefined - toBeNan - toContain - toEqual

Retour en haut