Existe-t-il de bons frameworks de tests unitaires node.js (côté serveur)? Je cherche quelque chose d'un peu plus profond que le module Assert fourni.
Je recherchais également un cadre de test décent pour noeud et trouvé Mocha . Il est le successeur officiel de Expresso et semble très mature.
Il permet de brancher différentes bibliothèques d'assertion, il offre aux reporters la couverture de code et d'autres choses (vous pouvez brancher le vôtre). Il peut exécuter la synchronisation ou async et il a une API concise.
Je vais essayer et faire un compte rendu ...
Après un temps incroyable consacré à d'autres projets, je suis finalement revenu à un projet Javascript et j'ai eu le temps de m'amuser avec le moka. Je peux sérieusement recommander de l'utiliser. Les tests se lisent très bien, l'intégration avec gulp est excellente et les tests s'exécutent très rapidement. En une demi-journée environ, j'ai été en mesure de configurer des exécutions de tests autonomes, autonomes et dans le navigateur (browserify) et les rapports de couverture de code correspondants (la plupart du temps nécessaire pour comprendre comment utiliser browserify de gulp). Pour moi, le moka semble être un très bon choix pour un framework de test.
Je suis toujours très convaincu de Moka. L'intégration avec chai permet de brancher différents styles d'assertion. Vous pouvez extraire une configuration de travail dans ce projet github . Je l'utilise maintenant avec le karma, intégrant un rapport de couverture de code, des observateurs automatiques et une bonne intégration avec IntelliJ
Personnellement, je n’ai utilisé que le module assert, mais j’ai aussi envie de plus. J'ai parcouru de nombreux modules de noeuds et les frameworks de tests unitaires populaires sont node-unit et devraient (ce qui est fait par le même homme qu'Expresso (peut-être un nom mis à jour?)
Voeux semble également prometteur.
Personnellement, je suis coincé avec Expresso , mais il existe de nombreux frameworks différents, adaptés à la plupart des styles de test.
Joyent a ne longue liste ; essayez-le.
J'ai installé avec Mocha - il y a un excellent tutoriel ici - http://brianstoner.com/blog/testing-in-nodejs-with-mocha/
voeux est une bibliothèque de test d'unité solide pour node.js mais la syntaxe est fastidieuse.
J'ai écrit une abstraction mince appelée vœu-fluent qui rend l'API chaînable.
Et j'ai écrit une autre abstraction, [voeux-est] qui s'appuie sur les voeux fluides et expose une syntaxe de style BDD.
Un exemple serait
var is = require("vows-is");
is.suite("testing is fun").batch()
.context("is testing fun?")
.topic.is("yes")
.vow.it.should.equal("yes")
.suite().run({
reporter: is.reporter
});
Je pense que parmi les différents cadres de test disponibles, mocha est le plus récent et très simple à mettre en œuvre. Voici un excellent tutoriel sur son utilisation: http://thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express -mocha /
Si vous connaissez QUnit , vous pouvez utiliser node-qunit , qui est une sorte de wrapper de nœud autour du framework existant de QUnit.
Je viens de télécharger un projet que j'utilise pour tester les nœuds avec Karma et Jasmine: narma . Vos modules de nœud sont chargés dans un navigateur nodewebkit afin que vous puissiez exécuter des modules de nœud et utiliser des bibliothèques telles que jquery dans le même segment de mémoire.
test-studio est un paquet npm qui fournit une interface Web puissante et performante pour les tests unitaires. Il prend en charge des tâches telles que l'exécution de tests individuels ou de groupes de tests et l'insertion progressive d'inspecteur de nœud dans des tests individuels. Il prend actuellement en charge le moka et davantage de cadres seront pris en charge à l'avenir, compte tenu de la demande.
En savoir plus à ce sujet ici .
Disclaimer: je suis l'auteur.
Fait à l'origine pour node.js, deadunit est une bibliothèque de test d'unités javascript pour node.js et le navigateur. Certains de ses attributs uniques:
count
qui facilite la gestion des exceptions attendues et des assertions asynchrones.