web-dev-qa-db-fra.com

Quel est le meilleur framework de test à utiliser avec Node.js?

J'ai examiné la liste assez longue des frameworks de test à l'adresse https://github.com/ry/node/wiki/modules#testing . Quelle est l'expérience de ces frameworks?

Évidemment, la possibilité de fonctionner dans le navigateur serait un gros bonus, mais je m'intéresse surtout à Node.js. Quelque chose avec une inclinaison fortement asynchrone serait génial.

128
doffm

Mise à jour:

Moka est le meilleur à mon avis.


Quelle est l'expérience avec ces frameworks?

J'ai joué avec expresso , qui est un cadre de test assez cool qui a également une couverture de test. Il a été créé par TJ Holowaychuk, qui est également le créateur de Express.js (cadre de développement Web JavaScript côté serveur incroyablement rapide (et petit) construit sur Node.js et Connect). J'ai récemment vu qu'il disposait également d'une bibliothèque géniale appelée should.js , qui peut être utilisée avec Expresso pour une expérience de test encore meilleure.

De toute évidence, la possibilité de fonctionner dans le navigateur serait un gros bonus

Je ne crois pas qu'il puisse fonctionner dans le navigateur, mais je ne comprends pas non plus pourquoi vous voudriez l'exécuter dans le navigateur?

mais je suis principalement intéressé par Node.js. Quelque chose avec une inclinaison fortement asynchrone serait génial.

Citation de l'expresso:

L'argument transmis à chaque rappel est beforeExit, qui est généralement utilisé pour affirmer que les rappels ont été appelés.

Vous pouvez utiliser beforeExit pour tester les fonctions asynchrones.


CONSEIL: Suivez TJ Holowaychuk sur GitHub , car il crée un très bon code open-source.

67
Alfred

J'utilise VowsJS qui est facile à utiliser le framework BDD asynchrone (Behavior Driven Development) et à faire le travail.

D'après ce que je vois récemment, beaucoup ont choisi de tester leurs modules NPM. Je pense donc que c'est l'un des meilleurs à utiliser jusqu'à présent.

Certains frameworks de test populaires pouvant être utilisés avec NodeJS sont également ceux:

Vous pouvez également voir une liste de frameworks de test JavaScript here

Quelques bibliothèques supplémentaires qui pourraient vous aider à écrire un meilleur code sont celles-ci:

Il existe également Bamboo CI Server par Atlassian , il automatise les versions et les tests. C’est un paquetage pour Apache/Tomcat (qui sux car il utilise Java et qui le rend très lourd) n’est pas non plus gratuit mais il a un licence de démarrage qui coûte 10 $ donc je crois que c'est abordable. Il s'agit du serveur le plus complet que j'ai trouvé jusqu'à présent. Il prend en charge tous les tests unitaires prenant en charge xUnit , ce qui signifie que vous pouvez exécuter des versions/tests pour toutes les langues avec Bamboo.

Une autre option pour CI avec NodeJS est Travis que beaucoup de gens utilisent pour leurs projets open source, comme il est dit Un service d'intégration continue hébergé pour la communauté open source.

Il existe également une discussion de groupe Google avec Intégration continue pour Node JS Projects topic.

40
panosru

Sur la base des commentaires du demandeur ci-dessus, j'ai essayé voeux , et cela a résolu de nombreux problèmes avec mes tests asynchrones. Sa capacité à combiner des tests en série et en parallèle est impressionnante.

Assurez-vous de lire attentivement le document d'orientation, mais une fois que vous avez compris, il est flexible, puissant et produit des résultats agréables et nets.

MISE À JOUR: J'encourage également les gens à vérifier devrait pour leurs affirmations. Il permet des assertions très souples, très lisibles, et est compatible avec Expresso et Vows, et probablement avec la plupart des autres frameworks de test.

(J'affiche cela comme réponse séparée au cas où les gens ne remarqueraient pas les commentaires sur la réponse d'Alfred.)

UPDATE 1/7/2015: Pour ce que cela vaut, j'ai depuis changé de voeux en moka, et de Should en chai. Mocha prend désormais mieux en charge les tests asynchrones utilisant des promesses et Chai permet plusieurs options d’assertion flexibles, y compris le expect api, pour ceux qui n’aiment pas modifier le prototype de l’objet.

14
Chris Jaynes

J'ai commencé à utiliser Jasmine pour mes tests JavaScript, car il est petit et qu'il s'exécute à la fois dans le navigateur et dans le nœud. Il possède également une API de reporting et de matcher très solide, ce qui facilite son intégration future à d'autres outils. Avoir un framework de construction moqueur est également utile car c'est souvent l'une des premières choses que j'ajouterais lorsque j'utilisais qunit pour TDD dans le navigateur.

6
Mark B

J'utilise nodeunit et sa capacité à travailler avec des fonctions asynchrones est relativement simple.

Il y a une solution pas à pas qui devrait vous préparer à partir avec nodeunit sur son blog .

[ Remarque: l'API a changé depuis que blogpost - setUp(callback) et tearDown(callback) prennent tous les deux un rappel. l’argument que vous devez appeler lorsque votre installation/démontage est terminé. ]

2
Vanwaril

Si vous voulez un vrai framework BDD, alors considérez peut-être Yadda . Il s’intègre à moka, jasmin, nodeunit, qunit, zombie et casperjs pour prendre en charge les fichiers de caractéristiques, par exemple.

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2
2
user2434418