web-dev-qa-db-fra.com

Cadre de test unitaire pour node.js prenant spécifiquement en charge le test de code async?

Il y a plus de 30 frameworks de test listés dans la liste de modules node.js ...

Quels cadres sont les plus populaires? Et quels sont leurs avantages et leurs inconvénients?

Je recherche un cadre qui prenne en charge le test unitaire du code comportant de nombreux rappels asynchrones (probablement comme la plupart des autres projets de nœuds). Aussi, je cherche quelque chose d'assez simple et petit que complexe.

Jusqu'ici j'ai examiné:

  • Nodeunit est simple et prend en charge le code asynchrone en vous permettant de définir le nombre d'assertions que vous comptez appeler et le moment où un test est effectué.
  • Vowsjs semble intéressant. Vous permet de bien structurer les tests et est livré avec de nombreuses fonctionnalités avancées. Vous ne savez pas si ces fonctionnalités sont réellement utiles, à travers ou si elles vous gênent plutôt?
36
alienhard

expresso et vœux sont les options les plus populaires. Bien qu'il y ait beaucoup de bonnes options sur le marché. Mise à jour: À compter de novembre 2011, Mocha est le successeur de expresso , selon le fichier Readme.md du répertoire expresso . should.js est souvent utilisé avec Mocha pour permettre les assertions de style BDD.

Quoi que vous choisissiez, je vous recommande d’utiliser doucement pour remplacer des modules de base ou tiers.

J'utilise/maintiens testostérone , un petit framework de test qui exécute des tests en série afin que vous puissiez abuser en douceur. Peu de gens l'utilisent cependant.

35
masylum

Depuis mars 2012, nous utilisons Nodeunit et nous n’avons pas regardé en arrière. Il est simple et facile à utiliser, il vous permet de choisir entre des appareils au niveau du module et de la classe (configuration/démontage), il possède un ensemble raisonnable d’assertions intégrées et son outil de ligne de commande est très flexible. Essayez de le combiner avec nodemon aussi.

Nous avons brièvement regardé un voeu mais ne voulions pas d'une toute nouvelle syntaxe étrange pour définir les tests. Tout ce dont vous avez besoin sont des assertions, des appareils et un harnais décent, et Nodeunit convient parfaitement.

9
a paid nerd

QUnit est aussi simple que possible, et prend en charge les appels asynchrones. C'est l'outil de test pour JQuery, vous pouvez donc être sûr qu'il est hautement pris en charge et fonctionne bien.

Vous pouvez envisager une intégration avec Sinon , qui est un framework moqueur qui permet notamment de simuler des événements asynchrones. Ce tutoriel et les autres parties du tutoriel qui y sont liées montrent comment utiliser Sinon pour tester du code asynchrone. C'est sur le navigateur, mais vous devriez pouvoir l'adapter pour tester les applications de nœud.

2
Andrea

Je ne l'ai pas encore utilisé, mais qu'en est-il de Jasmine de Pivotal Labs?

2
Dave Jensen

Prise mineure pour ma propre bibliothèque, mais plus important encore, je veux simplement que les autres développeurs de harnais réfléchissent à ce à quoi devrait ressembler un test asynchrone dans JS:

J'ai écrit spécifiquement OKJS parce que QUnit était tellement asynchrone et inutile. QUinit ne parvient pas à détecter les exceptions (!) Et nécessite un hacky start () pour garder une trace de la profondeur.

De nombreux frameworks de test ne disposent pas d'un simple wrapper de rappel pour les délais d'expiration des tests et la capture des exceptions. Je ne sais pas pourquoi - les rappels sont au cœur du développement asynchrone. = /

  setTimeout(function() {
    ok( true, "Passed and ready to resume!" );
    start();
  }, 1000);

OKJS intercepte les exceptions dans les écouteurs d'événement et garde une trace des demandes asynchrones en attente avec un déclencheur inter-homme mort qui peut échouer au test.

  setTimeout( unit.callback("test callback is fired"), 500);
  setTimeout( unit.callback("callback fired, with subtests", function () {
        unit.assert("in callback, true === true", true,true);
  }),  500);

J'adorerais voir ce style pris en charge par les solutions d'entreprise. Certaines des autres fonctionnalités proposées par OKJS sont des blocs de test qui s'exécutent en série (style de recette), mais attendent entre les blocs pour que les événements soient résolus. 

0
greg.kindel

test-studio est un package npm qui fournit une interface Web puissante et performante pour les tests unitaires. Il ne prend actuellement en charge que le moka et fournit des éléments tels que l'exécution de tests individuels ou de groupes de tests et l'inspection progressive de nœuds dans des tests individuels.

En savoir plus à ce sujet ici .

0
Dale Anderson