将茉莉花测试结果输出到控制台

时间:2011-08-23 08:09:57

标签: javascript firefox-addon javascript-framework jasmine


我在我的firefox附加组件中使用Jasmine(用于JavaScript的BDD测试框架)来测试我的代码的功能。

问题是茉莉正在将测试结果输出到HTML文件,我需要的是Firebug Console或其他输出结果的解决方案。

4 个答案:

答案 0 :(得分:29)

您是否尝试过ConsoleRepoter

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

根据代码,Jasmine有ConsoleReporter类来执行打印功能(在本例中为console.log),它应该做你需要的。

如果所有其他方法都失败了,您可以将其作为实现自己的console.log记者的起点。

答案 1 :(得分:15)

在最新的version of Jasmine (2.0)中,如果您想将测试输出提供给控制台,则需要添加以下行。

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

默认情况下包含输出到html,但是如果您根本不需要html输出,则必须编辑boot.js文件并从那里删除相关行。如果要自定义输出在控制台编辑文件console.js中的显示方式。 Source

答案 2 :(得分:5)

josmineRequire.ConsoleReporter在2.3.0中不存在所以我使用了以下代码:

//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());

答案 3 :(得分:3)

为了完整起见,这里有完整的配置:

首先运行npm install命令:

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

然后检查您的Jasmine配置以确保您在那里设置了帮助程序:

spec/support/jasmine.json

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

由于帮助程序在规范之前执行,您唯一需要做的就是创建一个控制台记者帮助程序。

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);