Logo JavaScript

Tests unitaires JavaScript avec MochaJS

Flattr this!

Cet article traînait dans les brouillons depuis un an. Je le publie aujourd'hui, mais il est possible que certaines choses soient passées d'actualité. Ne vous en formalisez pas svp.

Il y a plus d'un an, je me suis sérieusement intéressé à Mocha, un framework de tests unitaires pour JavaScript. J'utilisais jusque là un mix entre node-unit et QUnit mais je n'étais pas satisfait pour de banales raisons personnelles du genre style de code ou inefficacité de QUnit.

Alors Mocha, c'est là, pour démarrer. C'est un package node assez simple à installer :

npm install -g mocha

Il est très basique. C'est à dire que vous pouvez :

  • suggérer un bloc de tests ;
  • proposer un test ;
  • créer une série d'assertions ;
  • choisir l'outil d'assertions à utiliser ;
  • choisir le type de rapports générés ;
  • l'utiliser dans un navigateur ;
  • ...

Ça n'est pas le seul à faire ça mais, arbitrairement, c'est celui là que j'avais choisi et j'en suis satisfait.

Je l'utilise avec le module node assert pour créer mes assertions. Un module assez simple, comme je les aime :)

Parmi la liste des rapports disponibles, il y a un peu de tout. Vous pouvez avoir des petits points, des barres de progression, un rapport standardisé xUnit, un rapport JSON, un rapport HTML, un rapport pour Teamcity, un autre en markdown. Ou plus original, un rapport nyancat et un avion qui atterrit (ou pas).

Coté code, un exemple simple :

/*globals require, describe, it */

var assert = require('assert');

describe('String', function () {
    'use strict';

    describe('#trim()', function () {
        it('should be defined', function () {
            assert.strictEqual('function', typeof String.prototype.trim);
        });

        it('should be an empty string', function () {
            assert.strictEqual(''.trim(), '');
            assert.strictEqual(' '.trim(), '');
            assert.strictEqual('  '.trim(), '');
            assert.strictEqual('   '.trim(), '');
        });
});

Ici, vous aurez compris que je testais la fonction trim de l'objet String. Pas la meilleure chose à tester mais c'est pour la démo.

Bon ça c'est bien sympa, mais pour tester du script jQuery par exemple ? Il existe le module node JSDom qui permet de simuler un DOM en n'étant pas dans le navigateur. Vous pouvoir sur ce dépôt GitHub un excellent exemple de tests mocha sur un plugin jQuery.

Ça complexifie à peine plus le script et ça marche nickel.

Voilà, ceci était un petit exemple, un préambule de l'usage de mocha. Je ne l'ai pas encore inspecté dans ses tréfonds mais je compte bien l'utiliser au max de ses capacités.

Flattr this!

A propos de Mathieu

Ingénieur développeur web dans la vente par correspondance B2B, adepte de nouvelles technologies et d'innovation. Vous pouvez aussi me retrouver sur Twitter @mathrobin
Cette entrée a été publiée dans JavaScript, avec comme mot(s)-clef(s) , , , , , . Vous pouvez la mettre en favoris avec ce permalien.

Articles liés