Quelques questions:
Karma est un coureur de test de navigateur.
L'idée est que les navigateurs n'ont pas de manière native le concept de charger des fichiers de test, de les exécuter et de rapporter les résultats. Ce que fait le karma c'est (à peu près):
En regardant chaque partie:
(1) Ces fichiers seront vos fichiers js réels; tu diras au karma comment les charger. Si vous utilisez requirejs, il existe un plugin karma, et une configuration est nécessaire.
(2) Ces tests peuvent être écrits dans une variété de frameworks de test Javascript (Jasmine, QUnit, Mocha); c'est le code JS qui est exécuté dans le navigateur.
(3) La page Web personnalisée sera un peu différente pour chaque framework de test; C'est pourquoi Karma a des plugins pour différents frameworks.
(4) Karma peut lancer la page dans de nombreux navigateurs (FF, Chrome ou sans navigateur, comme PhantomJs.)
(5) La déclaration au karma est, encore une fois, dépendante de la structure et concerne les plugins de karma.
Donc pour répondre à vos questions:
Un moyen plus court de comprendre la différence:
Les personnes qui testent avec Jasmine/Mocha sont très probablement en train d'exécuter tout le code avec la machine virtuelle Node.
L'ajout de Karma au mélange (au-dessus de la structure existante de votre choix) lancera votre suite de tests avec le moteur des autres navigateurs.
En faisant cela, vous obtenez les petits extras que vous obtenez avec un environnement de navigateur. Il sera plus facile de tester le code lié au DOM, mais vous abandonnerez également les ressources supplémentaires fournies par le moteur Node (comme l’accès au système de fichiers/Shell).
La thèse du concepteur de Karma était très informative en décrivant les solutions existantes et en les comparant, et bien sûr en décrivant le Karma lui-même.
https://github.com/karma-runner/karma/blob/master/thesis.pdf
Résumé: Karma est un coureur de test. Il peut être utilisé par QUnit, Jasmine, Mocha, ... Karma présente des avantages par rapport aux autres testeurs pour améliorer votre cycle de développement TDD/BDD. Il "surveille" les fichiers. Ainsi, lorsque vous enregistrez une modification, Karma exécute des tests et en rend compte instantanément, sans changer de contexte vers le navigateur Web pour exécuter le test.
En bref, peut-être que la question devrait être Karma ET Jasmine ou Moka ou QUnit?