Javascript 将茉莉花测试结果输出到控制台
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7157999/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Output jasmine test results to the console
提问by Yosi
I am using Jasmine (BDD Testing Framework for JavaScript) in my firefox add-on to test the functionality of my code.
我在我的 firefox 插件中使用 Jasmine(BDD 测试框架 JavaScript)来测试我的代码的功能。
The problem is that jasmine is outputing the test results to an HTML file,what I need is to Firebug Console or other solution to output the results.
问题是 jasmine 将测试结果输出到 HTML 文件,我需要的是 Firebug 控制台或其他解决方案来输出结果。
采纳答案by Tigraine
Have you tried the ConsoleRepoter
你有没有试过ConsoleRepoter
jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log));
According to the code Jasmine has the ConsoleReporter class that executes a print function (in this case console.log) that should do what you need.
根据代码,Jasmine 有一个 ConsoleReporter 类,它执行一个打印功能(在这种情况下是 console.log),它应该做你需要的。
If all else fails you could just use this as a starting point to implement your own console.log reporter.
如果所有其他方法都失败了,您可以将其用作实现您自己的 console.log 报告器的起点。
回答by Pawel Miech
In newest version of Jasmine (2.0)if you want to get test output to console you need to add following lines.
在最新版本的 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
Output to html is included by default however so if you don't want html output at all you have to edit your boot.js file and remove relevant lines from there. If you want to customize how output is displayed in console edit file console.js. Source
输出到 html 是默认包含的,因此如果您根本不需要 html 输出,则必须编辑 boot.js 文件并从那里删除相关行。如果要自定义输出在控制台中的显示方式,请编辑文件 console.js。 来源
回答by HMR
jasmineRequire.ConsoleReporter did not exist in 2.3.0 so I used the following code:
jasmineRequire.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());
回答by Francesco Casula
For the sake of completeness here's the full configuration:
为了完整起见,这里是完整的配置:
First of all run the npm install
command:
首先运行npm install
命令:
npm install jasmine-console-reporter --save-dev
Then check your Jasmine configuration to make sure you got the helpers setting there:
然后检查您的 Jasmine 配置以确保您在那里设置了助手:
spec/support/jasmine.json
spec/support/jasmine.json
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
Since helpers are executed before specs the only thing you have to do is to create a console reporter helper.
由于助手在规范之前执行,因此您唯一要做的就是创建一个控制台报告助手。
spec/helpers/reporter/consoleReporter.js
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);