Concept
Un test, c'est du code qui vérifie du code
Un test automatique appelle une fonction avec des données choisies, puis vérifie le résultat. S'il est faux, le test échoue bruyamment — avant qu'un joueur ne tombe sur le bug.
La brique de base est l'assertion : une fonction qui ne fait rien si tout va bien, et qui lève une erreur explicite sinon. « Attendu 90, reçu 100 » vaut mieux que « échec ».
Attention à la comparaison : === compare les références des tableaux et des objets. [1, 2] === [1, 2] est faux. Une assertion d'égalité compare donc les valeurs, par exemple en comparant leur écriture JSON.
1function egal(recu, attendu) {2 const r = JSON.stringify(recu);3 const a = JSON.stringify(attendu);4 if (r !== a) throw new Error("Attendu " + a + ", reçu " + r);5}6 7egal(prixTotal([10, 20]), 30); // silencieux : tout va bien8egal(prixTotal([]), 0); // Error: Attendu 0, reçu undefinedLes bibliothèques de test (Vitest, Jest, node:test) fournissent ces assertions : expect(x).toEqual(y), assert.deepStrictEqual(x, y). Les écrire une fois soi-même permet de savoir ce qu'elles font.

