Les tests unitaires sont une partie essentielle du développement logiciel. Ils permettent de vérifier que les différentes parties (unités) d'une application fonctionnent comme prévu. Les tests unitaires sont écrits et exécutés par les développeurs pour s'assurer que leur code répond aux exigences de conception et se comporte comme prévu.

Dans l'écosystème JavaScript, Mocha et Chai sont deux frameworks de test très populaires qui sont souvent utilisés ensemble pour écrire et exécuter des tests unitaires.

Mocha

Mocha est un framework de test riche et flexible pour Node.js et le navigateur. Il est responsable de l'exécution des tests et de la présentation des résultats. Mocha vous permet de définir des "suites" de tests, qui sont des collections de tests individuels, et des "tests", qui sont les tests individuels eux-mêmes.

Voici quelques caractéristiques clés de Mocha :

  • Il permet une grande flexibilité dans la façon dont les tests sont organisés et exécutés.
  • Il prend en charge les tests asynchrones.
  • Il permet de choisir parmi plusieurs reporters pour afficher les résultats des tests.
  • Il a un support pour les hooks (avant, après, avant chaque test, après chaque test) pour la configuration et le nettoyage.

Chai

Chai est une bibliothèque d'assertion qui peut être jumelée avec n'importe quel framework de test JavaScript. Elle permet de vérifier que les choses sont comme prévu. Chai offre plusieurs styles d'assertion qui peuvent être plus lisibles selon vos préférences : expect, should, et assert.

Voici quelques caractéristiques clés de Chai :

  • Il fournit des assertions de style BDD (Behavior-Driven Development) et TDD (Test-Driven Development).
  • Il permet de tester des égalités, des types, des propriétés, des inclusions, etc.
  • Il est extensible avec de nombreux plugins disponibles.

Installation de Mocha et Chai

Pour commencer à utiliser Mocha et Chai, vous devez les installer via npm :

npm install --save-dev mocha chai

Exemple de Test avec Mocha et Chai

Voici un exemple simple de test pour une fonction qui additionne deux nombres :

// add.js
function add(a, b) {
  return a + b;
}

module.exports = add;

 

Et voici le test correspondant utilisant Mocha et Chai :

// add.test.js
const add = require('./add');
const expect = require('chai').expect;

describe('Add Function', () => {
  it('should add two numbers', () => {
    const result = add(2, 3);
    expect(result).to.equal(5);
  });
});

 

Pour exécuter les tests, vous ajouteriez un script dans votre package.json :

"scripts": {
  "test": "mocha *.test.js"
}

Et exécutez-le avec npm :

npm test

Organisation des Tests

Mocha vous permet d'organiser vos tests en suites de tests, ce qui est utile pour regrouper des tests similaires. Utilisez describe pour définir une suite de tests et it pour définir un test individuel.

Hooks

Mocha fournit des hooks tels que before(), after(), beforeEach(), et afterEach() qui sont utiles pour la configuration et le nettoyage :

describe('Some Test Suite', () => {
  before(() => {
    // Code à exécuter avant tous les tests
  });

  after(() => {
    // Code à exécuter après tous les tests
  });

  beforeEach(() => {
    // Code à exécuter avant chaque test
  });

  afterEach(() => {
    // Code à exécuter après chaque test
  });

  it('should do something', () => {
    // Test
  });
});

 

Assertions avec Chai

Chai offre différentes manières de faire des assertions. Voici un exemple utilisant expect :

expect(result).to.be.a('number');
expect(result).to.equal(5);
expect(result).to.be.at.least(3);
expect(result).to.have.property('length');

 

En combinant Mocha et Chai, vous pouvez écrire des tests unitaires puissants et lisibles pour votre application Node.js, ce qui contribue à une base de code plus fiable et maintenable.

 
Modifié le: jeudi 2 novembre 2023, 07:32