Envíe los resultados de la prueba jasmine a la consola



Estoy usando Jasmine (BDD Testing Framework for JavaScript) en mi complemento de Firefox para probar la funcionalidad de mi código.

El problema es que jasmine está enviando los resultados de la prueba a un archivo HTML,lo que necesito es una consola Firebug u otra solución para generar los resultados.

Author: Yosi, 2011-08-23

4 answers

¿Has probado el Consolador

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

Según el código Jasmine tiene la clase ConsoleReporter que ejecuta una función de impresión (en este caso console.log) que debería hacer lo que necesitas.

Si todo lo demás falla, podría usar esto como punto de partida para implementar su propia consola.reportero de registro.

 29
Author: Tigraine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-23 08:19:36

En la nueva versión de Jasmine (2.0) si desea obtener la salida de prueba a la consola, debe agregar las siguientes líneas.

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 salida a html está incluida de forma predeterminada, por lo que si no desea una salida html en absoluto, debe editar su arranque.js archivo y eliminar las líneas relevantes de allí. Si desea personalizar cómo se muestra la salida en la consola, edite la consola de archivos.js. Fuente

 15
Author: Pawel Miech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-31 09:59:09

[1] JasmineRequire.ConsoleReporter no existía en 2.3.0 así que usé el siguiente código:

//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
Author: HMR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-19 04:25:13

Por el bien de la integridad aquí está la configuración completa:

En primer lugar ejecute el comando npm install:

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

Luego revise su configuración de Jasmine para asegurarse de que tiene la configuración de helpers allí:

spec/support/jasmine.json

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

Dado que los helpers se ejecutan antes de las especificaciones, lo único que tiene que hacer es crear un helper de consola.

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);
 2
Author: Francesco Casula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-19 14:26:59