Test unitaire Node.js [fermé]

164

Existe-t-il actuellement de bons cadres de test unitaires node.js (server side js)? Je recherche quelque chose d'un peu plus profond que le module Assert fourni.

marque
la source

Réponses:

66

J'ai fini par utiliser node-unit et j'en suis vraiment content.

J'utilisais Expresso à l' origine mais le fait qu'il exécute des tests en parallèle a causé quelques problèmes. (Par exemple, l'utilisation de fixtures de base de données ne fonctionne pas bien dans cette situation).

maléfique
la source
25
Expresso ne vous oblige pas à exécuter des tests en parallèle. Donnez-lui l'argument --serial et il les exécutera tous dans un ordre joyeux.
einaros
3
Juste téléchargé et utilisé nodeunit ... fait exactement ce qu'il dit, a travaillé la première fois ftw!
Michael Dausmann
1
Nodeunit est un peu étrange d'exiger de chaque test d'appeler à .done()mon humble avis.
Kos
2
Si je commençais un nouveau projet maintenant, j'utiliserais probablement Mocha comme cadre de test
evilcelery
1
Nodeunit doit .done()prendre en charge les tests asynchrones. Je conviens que cela peut parfois être un peu difficile à manier, mais cela a une excellente raison de le faire de cette façon.
L0j1k
48

Je cherchais également un cadre de test décent pour node et j'ai trouvé Mocha . Il est le successeur officiel d' Expresso et semble très mature.

Il permet de brancher différentes bibliothèques d'assertions, il offre des reporters pour la couverture du code et d'autres choses (vous pouvez brancher les vôtres). Il peut exécuter une synchronisation ou une synchronisation asynchrone et dispose d'une API concise.

Je vais essayer et faire un rapport ...

ÉDITER:

Après un temps incroyable consacré à d'autres projets, je suis finalement revenu sur un projet Javascript et j'ai eu le temps de jouer 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 sont très rapides. J'ai pu configurer des tests automatiques autonomes et dans le navigateur (browserify) et des rapports de couverture de code correspondants en une demi-journée environ (la plupart du temps passé à comprendre comment utiliser browserify de gulp). Pour moi, mocha me semble un très bon choix pour un framework de test.

METTRE À JOUR:

Je suis toujours très convaincu du moka. L'intégration avec chai permet de connecter différents styles d'assertion. Vous pouvez récupérer une configuration de travail dans ce projet github . Je l'utilise maintenant avec karma, intégrant un rapport de couverture de code, des observateurs automatiques et une bonne intégration avec IntelliJ

Bennidi
la source
Le lien du projet github est rompu. Pourriez-vous le renouveler, s'il vous plaît?
karlisup
1
Premiers pas avec Mocha - brianstoner.com/blog/testing-in-nodejs-with-mocha
Nicholas Blasgen
15

Personnellement, je n'ai utilisé que le module d'assert, mais j'en redemande aussi. J'ai parcouru de nombreux modules de nœuds et les cadres de tests unitaires populaires sont des unités de nœud et devraient (qui est fait par le même gars qu'Expresso (peut-être un nom mis à jour?)

Les vœux semblent également prometteurs.

jtsao22
la source
15
Je vous vote juste pour ce jeu de mots.
ThomasReggi
15

Personnellement, je suis resté avec Expresso , mais il existe de nombreux frameworks différents, adaptés à la plupart des styles de test.

Joyent a une longue liste ; essayez ça.

einaros
la source
1
Expresso est le seul qui a du sens pour moi et fonctionne correctement avec du code asynchrone. J'ai essayé les vœux et j'ai arrêté aussi.
balupton le
5

vows est une solide bibliothèque de tests unitaires pour node.js mais la syntaxe est fastidieuse.

J'ai écrit une abstraction mince appelée vows-fluent qui rend l'API chaînable.

Et j'ai écrit une autre abstraction, [vows-is] qui s'appuie sur les vœux fluent 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
});

Plus d'exemples

Raynos
la source
6
amen à cela, la syntaxe des vœux est horrible IMO
Donn Felker
J'ai joué avec les vœux avec l'emballage apaisant. Cela a semblé être une bonne idée pour tester une API json mais a rapidement échoué. J'ai aussi tendance à trouver que les API qui sont fortement orientées vers le chaînage d'appels comme celui-ci sont difficiles à utiliser et à déboguer. Ils ont l'air bien dans les exemples, mais ne fonctionnent pas bien dans le monde réel.
drekka
Les vœux et les vœux de @drekka sont horribles. use moka
Raynos
Essayer maintenant, mais semble se heurter à un tas de problèmes similaires.
drekka
vous devez l'employer mal alors. essayez de lire gist.github.com/2896455 . @drekka
Raynos
1

Si vous êtes familier avec QUnit , vous pouvez utiliser node-qunit qui est une sorte de wrapper de nœud autour du framework existant de QUnit.

Zorayr
la source
0

Initialement conçu pour node.js, deadunit est une bibliothèque de tests unitaires javascript pour node.js et le navigateur. Certains de ses attributs uniques:

  • Courbe d'apprentissage facile
  • Peut afficher les résultats des tests sur la ligne de commande (en couleur ou en texte brut) ou au format HTML
  • Il imprime les lignes de code réelles où se trouvent vos assertions, de sorte que votre sortie a du sens même si vous ne passez pas beaucoup de temps à écrire des commentaires de test
  • Il a une countassertion simple qui facilite le traitement des exceptions attendues et des assertions asynchrones
  • il imprime l'exception et toutes les données jointes qu'ils ont
  • il vous permettra de savoir si votre code est suspendu (quelque chose que vous ne voulez pas, mais passe généralement inaperçu)
  • Possède une API événementielle qui permet de diffuser les résultats des tests sur un réseau, ou de la manière que vous souhaitez.
  • Prend en charge les tests avec des fibres de nœud
BT
la source
0

Je viens de télécharger un projet que j'utilise pour tester des unités nodejs avec karma et Jasmine: narma . Vos modules de nœuds sont chargés dans un navigateur nodewebkit afin que vous puissiez exécuter des modules de nœuds et utiliser des bibliothèques comme jquery dans le même tas.

noamtcohen
la source
0

test-studio est un package npm qui fournit une interface Web puissante pour les tests unitaires. Il prend en charge des tâches telles que l'exécution de tests individuels ou de groupes et la progression de l'inspecteur de nœuds dans des tests individuels. Il prend actuellement en charge le moka et d'autres cadres seront pris en charge à l'avenir en fonction de la demande.

En savoir plus ici .

Avertissement: je suis l'auteur.

Dale Anderson
la source
1
ressemble à ceci a été écrit par vous, non? si tel est le cas, vous devez divulguer ce fait dans votre réponse.
strugee