CucumberJS est un nouvel outil qui, selon un récent article de Todd Anderson, lorsqu'il est ajouté dans le processus de développement d'un projet JavaScript, permet d'adopter les idées derrières le Behaviour Driven Development, BDD, et aide le développeur à suivre les principes du TDD en ayant une approche par l'extérieur, c'est-à-dire avoir des tests qui échouent tant qu'une fonctionnalité n'est pas implémentée.
Todd, développeur et co-auteur de trois livres, décrit CucumberJS comme un portage en JavaScript de Cucumber, outil de BDD, qui fonctionne à la fois pour les applications NodeJS et dans les navigateurs modernes. Il permet de rédiger les spécifications fonctionnelles en Gherkin et de les exécuter ensuite avec un utilitaire en ligne de commande qui génère un rapport de passage ou d'échec des étapes et scénarios d'une spécification. Il note cependant que Cucumber n'est que le framework de test, il incombe au développeur d'utiliser une bibliothèque d'assertion qui fait que ces étapes passent ou échouent.
Todd prend comme exemple une ancienne application de liste de courses pour expliquer comment faire du BDD avec Cucumber. Il donne par exemple la spécification suivante :
Feature: Shopper can add an item to their Grocery List
Scenario: Item added to grocery list
Given I have an empty grocery list
When I add an item to the list
Then the grocery list contains a single item
Qui en français peut se traduire par :
Fonctionnalité: Un client peut ajouter un produit à sa liste de courses
Scenario: Produit ajouté à la liste de courses
Étant donné que ma liste est vide
Quand j'ajoute un produit à la liste
Alors la liste de course contient un seul produit
La fonctionnalité représente la valeur ajoutée en termes de business alors que le scénario définit la liste des étapes produisant cette valeur ajoutée. Chaque scénario contient une liste d'étapes définies par les mot-clés Given, When et Then. CucumberJS va ensuite lire la spécification et exécuter ces étapes.
Utilisant CucumberJS avec NodeJS, Todd montre comment implémenter l'application en partant de tests qui échouent pour arriver à les faire tous passer.
Todd conclut sur sa conviction de l'intérêt d'un code bien testé lors d'un refactoring ou de la correction de bugs. Il ajoute que d'autres articles traiteront de son utilisation de CucumberJS pour lancer ses tests d'intégration dans un navigateur.
Le BDD a été développé par Dan North vers 2006.
Cucumber est un outil de BDD open-source qui fonctionne actuellement avec neuf langages dont JavaScript.