J'essaie de trouver le meilleur moyen de déboguer mes tests unitaires lorsque je les casse. Généralement, dans les environnements de test précédents, je pouvais simplement exécuter les tests dans le navigateur et arrêter le test ou le code et voir pourquoi mon test échouait. Je n'arrive pas à comprendre comment faire cela avec Testacular. Existe-t-il un moyen simple de déboguer les tests unitaires?
Inclure "navigateurs = ['Chrome'];" dans votre fichier karma.config.
Lorsque Chrome s'ouvre, vous devriez voir "Karma - connected" en haut, avec un bouton "Debug" en haut à droite.
Cliquez sur ce bouton de mise au point et un onglet "Karma DEBUG RUNNER" s'ouvrira. Ensuite, il vous suffit de cliquer avec le bouton droit de la souris, d’inspecter un élément et de déboguer comme vous le feriez normalement.
Dans karma.conf.js
:
browsers = ['Chrome'];
Dans votre spec échec:
it('spec', function() {
debugger; // This is like setting a breakpoint
// ...
});
Désormais, dans l’onglet source des outils de développement de Chrome, l’exécution doit s’arrêter sur le débogueur.
J'ai trouvé le moyen de débogage suivant qui ne nécessite aucune modification de code (comme l'ajout d'une instruction "débogueur")
Définissez "singleRun" sur false dans le fichier de configuration karma, de sorte que karma écoute sur le port de débogage et que vous puissiez exécuter le test à nouveau dans le navigateur en lançant l'URL indiquée ci-dessous et en procédant au débogage:
Allez dans le navigateur capturé et cliquez sur le bouton "DEBUG" (ou ouvrez
http://localhost:9876/debug.html
) et utilisez l'inspecteur Web pour voir Que se passe-t-il. (Vous devrez peut-être actualiser la page debug.html pour pouvoir y accéder Une fois que l'inspecteur Web sera ouvert.)
Dans votre console, vous devez indiquer quelle instruction it () est rompue et pourquoi. Par exemple:
Todos Add a new todo should add a new todo FAILED
expected todo.length to be 1 but was 0
Cependant, vous trouverez peut-être utile de définir
logLevel = LOG_DEBUG;
dans votre fichier karma.conf.js.