Quels sont certains JavaScript Tests Unitaires et se moquant de Cadres que vous avez utilisés?
Principal de mon 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?
- Jack bibliothèque/lien semble mort.
- QUnit test est beaucoup plus facile avec Grunt
- Jack github.com/keronsen/jack
Vous devez vous connecter pour publier un commentaire.
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 soutien
- 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
Contre
- L'automatisation serait difficile à mettre en œuvre
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 besoin 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é en utilisant l'injection de dépendance partout.
Par exemple, avec JsMockito, vous avez à faire se moque et puis passer ceux qui se moque en 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 tout 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 clé est: est-ce une fois que vous avez raillé une fonction, TOUS les appels à cette fonction d'origine seront plutôt dirigés vers votre maquette. 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. D'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.
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.
De 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.
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é de 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 soutien
- Pour les DOM tests
- Les Tests de toujours exécuter séquentiellement dans l'ordre où ils sont ajoutés à une suite
Contre
- Automatisation de ne pas trivial à mettre en œuvre,mais moins difficile que d'autres cadres
Également vérifier
http://sinonjs.org/
Il fonctionne avec qUnit et qui a été un plus à ce jour.
C'est un très bon examen de se moquer de cadres disponibles pour Javascript:
http://testdrivenwebsites.com/2010/05/06/java-script-mock-frameworks-comparison
Nous avons été à l'aide de jsspec jsspec. Son très agréable si vous aimez rspec et BDD. Juste vu un article par Justin Gehtland sur l'utilisation de ce "headless" ainsi.
De se moquer en JavaScript prendre un coup d'oeil à qMock, un cadre, un collègue et j'ai écrit pour compléter notre utilisation de QUnit. Bien que ce dernier est idéal pour les tests unitaires, il n'autorise pas très efficace async/la logique métier de tests. Nous havn't 'marqué' une version stable, mais il y a quelques bons docs là-bas, et si vous checkout svn, vous verrez qmock lui-même a des tests unitaires derrière elle, qui sont assez explicites.
Oh, et pour automatiser les tests dans le cadre de la construction, nous avons utilisé un simple sélénium script pour naviguer à travers notre suite de tests (un test de page par fichier JS), et "écouté" pour une réussite ou d'échec de la classe CSS (ajouté par QUnit). Cela fonctionne sans tête, aussi bien pour IE/FF2 autant que je sache
Pour mozilla développement, je tombe en amour avec UXU, basé sur MozUnit mais encore actif. Dispose de fonctionnalités intéressantes comme la maquette du serveur ou du sommeil /méthodes de production.
- Je utiliser la Vis Unit test framework et j'ai écrit mon propre se moquant de la bibliothèque appelée jsMocha qui a été utilisée de façon intensive dans la société où je travaille depuis plus de 6 mois.
Je sais, vous vous demandez pour JQuery compatible avec les cadres, mais je veux lancer script.aculo.nous dans le mélange pour l'exhaustivité. Ils ont un unité de test suite qui n'est pas mauvais.
Croise semblait extrêmement puissant quand je l'ai regardé, mais nous n'avons pas intégré dans notre processus de construction en ce moment. Il a l'avantage d'être browserless, et donc devrait bien fonctionner dans un système automatisé de construire-et-scénario de test.
http://thefrontside.net/crosscheck
Vous pouvez essayer de Interface htmlunit qui avait un JQuery version compatible avec plus d'un an.
L'avantage de l'interface htmlunit, c'est que ce n'est pas la conduite d'un navigateur de sorte qu'il est RAPIDE.
L'inconvénient est qu'il n'est pas la conduite d'un navigateur donc il y a quelques JS choses qui ne fonctionnent pas. Mais la compensation qu'ils puissent exécuter le JQuery, les tests, donc le JS de soutien pourrait être assez bon pour ce que vous avez besoin.
JsUnit est exécuté depuis le navigateur, grâce à son plug-in Eclipse, ou automatiquement par le biais d'une tâche ANT. Vous créez une page HTML avec un tas de fonctions de test, qui doit être nommé avec le préfixe ‘test’, inclure le fichier JS que vous testez. Quand tout affirmer au sein d'une fonction échoue, l'ensemble de la fonction échoue et s'arrête en cours d'exécution. Il n'y a pas de garantie de l'ordre dans lequel ces tests sont exécutés. Vous pouvez créer
setup()
etteardown()
fonctions.Licence: GPL, GLPL, MPL
Pros
Contre