Résultats de test de jasmine de sortie à la console

J'utilise Jasmine (BDD Testing Framework for JavaScript) dans mon add-on Firefox pour tester les fonctionnalités de mon code.

Le problème est que jasmine produit les résultats du test à un fichier HTML, ce dont j'ai besoin est de la console Firebug ou d'une autre solution pour produire les résultats.

Avez-vous essayé le ConsoleRepoter

jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log)); 

Selon le code Jasmine possède la classe ConsoleReporter qui exécute une fonction d'impression (dans ce cas console.log) qui devrait faire ce dont vous avez besoin.

Si tout le reste échoue, vous pourriez simplement utiliser ceci comme un point de départ pour implémenter votre propre journaliste console.log.

Dans la version la plus récente de Jasmine (2.0) si vous souhaitez obtenir une sortie de test, vous devez ajouter les lignes suivantes.

 var ConsoleReporter = jasmineRequire.ConsoleReporter(); var options = { timer: new jasmine.Timer, print: function () { console.log.apply(console,arguments) }}; consoleReporter = new ConsoleReporter(options); // initialize ConsoleReporter jasmine.getEnv().addReporter(consoleReporter); //add reporter to execution environment 

La sortie à html est incluse par défaut, mais si vous ne voulez pas que la sortie html soit nécessaire, modifiez votre fichier boot.js et supprimez les lignes correspondantes à partir de là. Si vous souhaitez personnaliser la manière dont la sortie est affichée dans la console, éditez le fichier console.js. La source

JasmineRequire.ConsoleReporter n'existait pas en 2.3.0, donc j'ai utilisé le code suivant:

 //create a console.log reporter var MyReporter = function(){jasmineRequire.JsApiReporter.apply(this,arguments);}; MyReporter.prototype = jasmineRequire.JsApiReporter.prototype; MyReporter.prototype.constructor = MyReporter; MyReporter.prototype.specDone=function(o){ o=o||{}; if(o.status!=="passed"){ console.warn("Failed:" + o.fullName + o.failedExpectations[0].message); } }; var env = jasmine.getEnv(); env.addReporter(new MyReporter()); 

Dans un souci d'exhaustivité, voici la configuration complète:

Tout d'abord, exécutez la commande d' npm install :

 npm install jasmine-console-reporter --save-dev 

Ensuite, vérifiez votre configuration de Jasmine pour vous assurer que vous avez installé les assistants là-bas:

spec/support/jasmine.json

 { "spec_dir": "spec", "spec_files": [ "**/*[sS]pec.js" ], "helpers": [ "helpers/**/*.js" ], "stopSpecOnExpectationFailure": false, "random": false } 

Comme les assistants sont exécutés avant les spécifications, la seule chose que vous devez faire est de créer un assistant de journaliste de la console.

spec/helpers/reporter/consoleReporter.js

 const JasmineConsoleReporter = require('jasmine-console-reporter'); let consoleReporter = new JasmineConsoleReporter({ colors: 1, // (0|false)|(1|true)|2 cleanStack: 1, // (0|false)|(1|true)|2|3 verbosity: 4, // (0|false)|1|2|(3|true)|4 listStyle: 'indent', // "flat"|"indent" activity: false }); jasmine.getEnv().addReporter(consoleReporter); 
  • Jasmine-console-reporter sur npmjs.com
  • Jasmin Custom Reporter docs
  • Référence de configuration Jasmine