42 votes

Quels sont les cadres de tests unitaires et de moqueries JavaScript que vous avez utilisés?

Mon principal framework JavaScript est jQuery donc je voudrais que mon test de l'unité et se moquant de cadres pour être compatible avec cette. Je préfère ne pas avoir à introduire un autre framework JavaScript.

Je suis actuellement en utilisant QUnit pour les tests unitaires et Jack pour se moquer, mais je suis assez nouveau à l'ensemble de l'unité de test de JavaScript.

Quelqu'un d'autre a un meilleur outil à proposer? Ce qui a fonctionné pour vous?

21voto

Charlie Flowers Points 9145

Je pense que Jack est le meilleur moqueur cadre du JavaScript, de l'écriture de ce document. La raison principale est que ce qui est bon pour le JavaScript n'est probablement pas ce qui est bon pour un langage fortement typé comme Java.

Beaucoup de JavaScript se moquant de cadres sont inspirés par Java cadres fictifs (comme l'excellent JsMockito, par exemple). Mais le problème avec ces derniers est qu'ils exigent de l'injection de dépendance, parce que c'est la seule façon raisonnable d'utiliser les moqueries en Java. Mais en JavaScript, il existe de NOMBREUSES façons d'utiliser les moqueries, et vous n'êtes pas forcé de recourir à l'injection de dépendance partout.

Par exemple, avec JsMockito, vous avez à faire se moque et puis de transmettre ces objets fantaisie dans votre logiciel sous test (SUT). La CUS a pour appeler directement les objets fantaisie. Par conséquent, vous êtes obligé de code de la CUS comme un constructeur ou une fonction qui prend dans toutes ses dépendances en tant que paramètres. (Parfois, c'est une belle façon de mettre en œuvre, mais pas dans tous les cas. La queue qui remue le chien si votre moqueur cadre de la conception des forces de votre approche de mise en œuvre).

En JavaScript, il est très facile de "détourner" une fonction. Par conséquent, il ya des tonnes de façons de construire quelque chose, de telle sorte que vous pouvez se moquer des parties, sans explicitement l'injection de ses dépendances en elle. Par exemple, Jack permet de se moquer de toute fonction, qu'elle soit publique ou sur un objet local. De là, vous pouvez espionner sur elle, stub, ou à exprimer des attentes sur elle. Le point essentiel est ceci: une fois que vous avez raillé une fonction, TOUS les appels à cette fonction d'origine doivent être adressées à votre fantaisie. En d'autres termes, votre se moque seront toujours utilisés, même si l'original, de l'onu-se moquaient de fonction a été appelée. Comme un résultat, vous n'êtes pas obligé d'injecter des dépendances, bien que vous pouvez certainement le faire dans les cas qui l'exigent.

JavaScript est un langage différent de Java et C#, etc.) Il permet une mise en œuvre différente des idiomes. L'injection de dépendance est encore un précieux outil dans la boîte à outils en JavaScript, mais ce n'est pas le seul jeu en ville plus. Votre moqueur cadre des besoins de connaître et de respecter ce fait. Jack et un couple de d'autres le font, mais de ceux qui le font, Jack semble être la plus mature et riche en fonctionnalités.

19voto

Chris MacDonald Points 3261

QUnit
jQUnit
Écrit JS tests avec QUnit et jQUnit

QUnit est le framework de test unitaire pour le framework JavaScript jQuery. Le cadre de tests de lui-même utilise la bibliothèque jQuery, mais les tests peuvent être écrits pour n'importe quel JavaScript et ne nécessitent pas le code pour utiliser jQuery. JQUnit est une version modifiée de QUnit qui ajoute dans l'installation, le démontage, et de faire valoir les fonctions qui sont les plus typiques d'une infrastructure xUnit, et encapsule le tout dans une variable globale.

L'interface visuelle de l'lanceur de page est agréable, vous permettant de parcourir et de voir chaque affirmer dans chaque méthode de test. L'écriture de tests est assez facile, et vous pouvez exécuter le code de test directement sur le lanceur de page [8]. Cela permet de facile et visible DOM tests.

QUnit: MIT ou GPL (choisir) jQUnit: Licence MIT

Pros
Asynchrone, à l'appui
- Pour les DOM tests
- Les Tests de toujours exécuter séquentiellement dans l'ordre où ils sont ajoutés à une suite
- Debug sur la page de test à l'aide de firebug
- La syntaxe est similaire à JUnit si vous utilisez JQUnit, mais simple pour savoir si l'aide de QUnit
Cons
- L'automatisation serait difficile à mettre en œuvre

12voto

Jani Hartikainen Points 23183

Je ne sais pas pourquoi personne n'a mentionné JsTestDriver! Il doit être l'un des seuls JS outils de Tests qui fonctionnent réellement comme vous vous attendez à eux, si vous avez utilisé des outils de tests dans d'autres langues.

L'exécution des tests peut être fait sans toucher un navigateur, vous pouvez l'intégrer avec l'IDE, vous pouvez l'intégrer avec les systèmes d'intégration Continue... Oh, et il est rapide, et peut exécuter des tests dans plusieurs navigateurs en même temps.

Vous pouvez également utiliser d'autres tests de cadres comme YUITest avec elle, ce qui rend encore mieux.

6voto

Chris MacDonald Points 3261

YUI Test
TDD Avec YUI Test

YUI est le Test cadre de Yahoo bibliothèque d'Interface Utilisateur. Il est utilisé par Yahoo pour tester sa propre bibliothèque, et a une syntaxe similaire à jUnit.

Comme jsUnit, YUI Test est livré avec son propre journalisation de la console qui peut sortie info, les avertissements et les erreurs en plus des résultats de chaque test.

YUI offre également la possibilité d' envoyer des rapports sur les résultats au format JSON ou XML format.

YUI Test est sous Licence BSD.

Pros
- Vraiment une bonne documentation
- Communauté Active
- Des publications régulières
- La syntaxe est similaire à jUnit (des suites de test, s'affirme et d'installation/démontage)
Asynchrone, à l'appui
- Pour les DOM tests
- Les Tests de toujours exécuter séquentiellement dans l'ordre où ils sont ajoutés à une suite

Cons
- Automatisation de ne pas trivial à mettre en œuvre,mais moins difficile que d'autres cadres

3voto

AlexanderN Points 5805

Consultez également http://sinonjs.org/

Espions de test Bouts de test Mocks Faux minuteurs Fake XHR Faux serveur Assertions de sandboxing

Cela fonctionne avec qUnit et cela a été un avantage jusqu'à présent.

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