36 votes

Cadre de test unitaire pour node.js qui prend spécifiquement en charge le test du code asynchrone ?

Il existe plus de 30 cadres de test répertoriés sur le site Web de la Commission européenne. liste des modules node.js ...

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

Je suis à la recherche d'un cadre qui prend en charge les tests unitaires du code qui a beaucoup de callbacks asynchrones (probablement comme la plupart des autres projets node). Aussi, je cherche quelque chose de plutôt simple et petit que complexe.

Jusqu'à présent, j'ai examiné :

  • Unité de nœud est simple et prend en charge le code asynchrone en vous permettant de définir le nombre d'assertions à appeler et le moment où un test est terminé.
  • Vowsjs semble intéressant. Il permet de bien structurer les tests et offre de nombreuses fonctionnalités avancées. Vous n'êtes pas sûr que ces fonctionnalités soient réellement utiles ou qu'elles vous gênent plutôt ?

36voto

masylum Points 4819

expresso y vœux sont les options les plus populaires. Bien qu'il existe de nombreuses options intéressantes. Mise à jour : En date de novembre 2011, Moka est le successeur de expresso d'après le fichier Readme.md qui se trouve sur le site de l'entreprise. expresso dépôt. devrait.js est souvent utilisé avec Moka pour permettre les assertions de style BDD.

Quel que soit votre choix, je vous recommande d'utiliser doucement aux modules de base ou aux modules tiers.

J'utilise/entretiens testostérone un petit cadre de test qui exécute les tests en série pour que vous puissiez en abuser doucement. Peu de gens l'utilisent cependant.

9voto

a paid nerd Points 11716

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

Nous avons brièvement examiné Vows, mais nous ne voulions pas d'une nouvelle syntaxe bizarre pour définir les tests. Tout ce dont vous avez besoin, c'est d'assertions, de fixtures et d'un harnais décent, et Nodeunit convient parfaitement.

2voto

Andrea Points 7050

QUnit est aussi simple qu'un cadre de test peut l'être, et supporte les appels asynchrones. Il s'agit de l'outil de test de JQuery, vous pouvez donc être sûr qu'il est hautement supporté et qu'il fonctionne bien.

Vous pouvez envisager l'intégration avec Sinon Il s'agit d'un cadre de simulation, 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. Il porte sur le navigateur, mais vous devriez être en mesure de l'adapter au test d'applications node.

2voto

djensen47 Points 1406

Je ne l'ai pas encore utilisé, mais pourquoi pas Jasmine de Pivotal Labs ?

0voto

greg.kindel Points 978

Un petit plug pour ma propre bibliothèque, mais plus important encore, je veux juste que les autres développeurs de harnais réfléchissent à ce que devrait être un test asynchrone en JS :

J'ai écrit spécifiquement OKJS parce que QUnit était si inutile en asynchrone. QUinit n'arrive pas à attraper les exceptions ( !), et nécessite un start() compliqué pour garder la trace de la profondeur.

De nombreux cadres de test ne disposent pas d'un simple wrapper de callback pour tester les délais d'attente et la capture des exceptions. Je ne sais pas pourquoi - les callbacks sont au cœur du développement asynchrone. =/

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

OKJS capte les exceptions dans des récepteurs d'événements et garde la trace des demandes asynchrones en suspens avec un déclencheur interallié qui peut faire échouer le 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'aimerais que ce style soit soutenu par les solutions d'entreprise. Parmi les autres fonctionnalités préconisées par OKJS, citons les blocs de test qui s'exécutent en série (style recette), mais qui attendent entre les blocs que les événements soient résolus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X