我在我的firefox附加组件中使用Jasmine(用于JavaScript的BDD测试框架)来测试我的代码的功能。
问题是茉莉正在将测试结果输出到HTML文件,我需要的是Firebug Console或其他输出结果的解决方案。
答案 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);