Jest

Jest est un framework de tests JavaScript très populaire.

Il permet d’écrire et d’exécuter des tests automatisés pour vérifier que le code fonctionne correctement.

Jest est utilisé dans plusieurs projets JavaScript, notamment dans de nombreuses codebases plus anciennes ou déjà établies.

1. C’est quoi Jest ?

Jest est un outil de test JavaScript.

Il permet d’utiliser :

2. Installer Jest

Dans un projet Node.js, Jest s’installe avec npm.

npm install --save-dev jest

Cette commande installe Jest comme dépendance de développement.

3. Ajouter le script de test

Dans le fichier package.json, on ajoute un script.

{
    "scripts": {
        "test": "jest"
    }
}

Ensuite, on peut lancer les tests avec :

npm test

4. Structure d’un fichier de test

Par convention, un fichier de test Jest utilise souvent :

.test.js

Exemple :

sum.js
sum.test.js

5. Exemple simple

Fichier à tester :

// sum.js

function sum(a, b) {

    return a + b;

}

module.exports = sum;

Fichier de test :

// sum.test.js

const sum = require("./sum");

test("additionne 1 + 2 pour obtenir 3", () => {

    expect(sum(1, 2)).toBe(3);

});

C’est l’exemple de base recommandé dans la documentation officielle de Jest : installer Jest, créer une fonction, créer un fichier .test.js, puis lancer les tests avec npm test.

6. test()

La fonction test() permet de créer un test.

test("additionne deux nombres", () => {

    expect(2 + 2).toBe(4);

});

Le premier argument décrit le test. Le deuxième argument contient le code à exécuter.

7. expect()

La fonction expect() indique la valeur à tester.

expect(2 + 2).toBe(4);

Ici, Jest vérifie que le résultat de 2 + 2 est bien 4.

8. toBe()

La méthode toBe() compare des valeurs simples.

expect(10).toBe(10);

expect("Fred").toBe("Fred");

expect(true).toBe(true);

Elle est idéale pour comparer :

9. toEqual()

La méthode toEqual() compare le contenu des objets et tableaux.

expect([1, 2, 3]).toEqual([1, 2, 3]);

expect({ name: "Fred" }).toEqual({ name: "Fred" });

On utilise toEqual() parce que les objets et tableaux sont comparés par référence en JavaScript.

10. describe()

La fonction describe() permet de regrouper plusieurs tests liés.

describe("sum", () => {

    test("additionne deux nombres positifs", () => {

        expect(sum(2, 3)).toBe(5);

    });

    test("additionne avec zéro", () => {

        expect(sum(0, 3)).toBe(3);

    });

});

Cette structure rend les tests plus organisés et plus faciles à lire.

11. CommonJS et modules

Jest est historiquement très lié à la syntaxe CommonJS.

module.exports = sum;
const sum = require("./sum");

Dans les projets modernes, on peut aussi utiliser import et export, mais cela peut demander une configuration supplémentaire selon le projet.

12. Lancer les tests

Pour exécuter les tests :

npm test

Jest cherche automatiquement les fichiers de test, comme :

13. Watch mode

Le mode watch permet de relancer les tests automatiquement lorsqu’un fichier change.

npx jest --watch

C’est pratique pendant le développement.

14. Coverage

Le coverage permet de voir quelle partie du code est couverte par les tests.

npx jest --coverage

Cette commande génère un rapport de couverture.

15. Exemple complet

Fichier à tester :

// cart.js

function createMessageCart(cart) {

    if (cart.size === 0) {

        return "Votre panier est vide";

    }

    return "Votre panier contient des articles";

}

module.exports = createMessageCart;

Fichier de test :

// cart.test.js

const createMessageCart = require("./cart");

describe("createMessageCart", () => {

    test("retourne un message quand le panier est vide", () => {

        const cart = new Map();

        expect(createMessageCart(cart))
            .toBe("Votre panier est vide");

    });

    test("retourne un message quand le panier contient des articles", () => {

        const cart = new Map();

        cart.set("patate", 1);

        expect(createMessageCart(cart))
            .toBe("Votre panier contient des articles");

    });

});

16. Jest vs Vitest

Jest Vitest
Très populaire historiquement Très moderne avec Vite
Souvent utilisé dans de grosses codebases Souvent utilisé dans les projets front-end récents
Configuration parfois plus lourde Intégration rapide avec Vite
Excellent à connaître Excellent à apprendre en premier aujourd’hui

17. Bonnes pratiques avec Jest

Résumé rapide

Concept Utilité
Jest Framework de tests JavaScript
npm install --save-dev jest Installer Jest
test() Créer un test
describe() Regrouper des tests
expect() Créer une assertion
toBe() Comparer des valeurs simples
toEqual() Comparer objets et tableaux
npm test Lancer les tests
--watch Relancer les tests automatiquement
--coverage Mesurer la couverture de tests