web-dev-qa-db-fra.com

Sortie des résultats des tests de jasmin sur la console


J'utilise Jasmine (BDD Testing Framework pour JavaScript) dans mon module complémentaire Firefox pour tester la fonctionnalité de mon code.

Le problème est que jasmine génère les résultats des tests dans un fichier HTML, ce dont j'ai besoin est de Firebug Console ou d'une autre solution pour produire les résultats.

39
Yosi

Avez-vous essayé le ConsoleRepoter

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

Selon le code, Jasmine a 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 pouvez simplement l'utiliser comme point de départ pour implémenter votre propre reporter console.log.

29
Tigraine

Dans la plus récente version de Jasmine (2.0) si vous souhaitez obtenir une sortie de test sur la console, 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 en html est incluse par défaut cependant, donc si vous ne voulez pas du tout de sortie en html, vous devez éditer votre fichier boot.js et supprimer les lignes pertinentes à partir de là. Si vous souhaitez personnaliser l'affichage de la sortie dans la console, modifiez le fichier console.js. Source

15
Pawel Miech

jasmineRequire.ConsoleReporter n'existait pas dans la version 2.3.0, j'ai donc 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());
5
HMR

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

Exécutez tout d'abord le npm install commande:

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

Vérifiez ensuite votre configuration Jasmine pour vous assurer que vous disposez bien des paramètres des assistants:

spec/support/jasmine.json

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

Étant donné que les assistants sont exécutés avant les spécifications, la seule chose que vous avez à faire est de créer une aide de reporter de 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);
3
Francesco Casula