Test avec Jest

Pourquoi mettre en place des tests ?

  • Assurer la qualité du code
  • Prévenir les régressions
  • Faciliter la maintenance

Types de tests

  • Tests unitaires
  • Tests d'intégration
  • Tests fonctionnels

Tests unitaires

Les tests unitaires vérifient le bon fonctionnement d'une unité de code (fonction, classe, etc.) de manière isolée.

Tests d'intégration

Les tests d'intégration vérifient le bon fonctionnement de plusieurs unités de code qui interagissent entre elles. (ex: une fonction qui interagit avec une base de données ou un système externe)

Tests fonctionnels

Les tests fonctionnels vérifient le bon fonctionnement d'une fonctionnalité du point de vue de l'utilisateur.

Dans ce cas, on créer des scénarios de test qui simulent l'usage réel de l'application.

Jest

Jest est un framework de test pour JavaScript.

Documentation

Installation

npm install --save-dev jest

Exemple de test

// sum.test.js

// Fonction à tester
function sum(a, b) {
	return a + b;
}
// Comparaison du résultat avec la valeur attendue
test('adds 1 + 2 to equal 3', () => {
	expect(sum(1, 2)).toBe(3);
});
					

Comparateurs/matcheurs de la classe Expect de Jest

  • toBe() : vérifie l'égalité stricte
  • toEqual() : vérifie l'égalité de valeur
  • toBeTruthy() : vérifie qu'une valeur est truthy
  • toBeFalsy() : vérifie qu'une valeur est falsy

Documentation des comparateurs

Configuration de Jest dans le package.json

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

Exécution des tests

npm test

Dans un monde idéal ...

Chaque ligne de code est testée, et chaque test est exécuté à chaque modification du code.