我在我的火狐插件中使用Jasmine(JavaScript BDD测试框架)来测试代码的功能。
问题是Jasmine将测试结果输出到HTML文件中,我需要使用Firebug控制台或其他解决方案将结果输出。
我在我的火狐插件中使用Jasmine(JavaScript BDD测试框架)来测试代码的功能。
问题是Jasmine将测试结果输出到HTML文件中,我需要使用Firebug控制台或其他解决方案将结果输出。
你尝试过使用ConsoleReporter吗?
jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log));
根据代码,Jasmine有ConsoleReporter类执行print函数(在这种情况下是console.log),可以做你需要的事情。
如果一切都失败了,您可以将其用作实现自己的console.log报告的起点。
更新 在较新的jasmine版本中,已删除ConsoleReporter。您可以使用内置的jsApiReporter,或编写自己的(console)报告器,如以下链接所示:https://jasmine.github.io/tutorials/custom_reporter
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
boot.js
中。 - mustafa.0xnpm install jasmine-console-reporter --save-dev
{
"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);
jasmine
是多么的复杂。为什么不在jasmine.json
中添加"color": "true"
选项呢?就像在mocha
中只需在配置文件中键入--color
一样。 - GreenjasmineRequire.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());
jsApiReporter
后立即将其添加到boot.js
中。我删除了var env=...
行,因为env
已经存在。您是否愿意添加一些说明以帮助我更好地理解JsApiReporter
和MyReporter
之间的交互? - cxw我创建了上述答案的摘要解决方案,并在不同的jasmine版本上进行了测试。将其添加到您的boot.js中(例如,添加到boot1.js中):
const env = jasmine.getEnv();
const jasmineRequire = window.jasmineRequire || require('./jasmine.js');
var ConsoleReporter = window.ConsoleReporter;
var options = null;
if (!jasmine.ConsoleReporter || !!jasmineRequire.ConsoleReporter) {
if (!jasmineRequire.ConsoleReporter) {
ConsoleReporter = function(){jasmineRequire.JsApiReporter.apply(this,arguments);};
ConsoleReporter.prototype = jasmineRequire.JsApiReporter.prototype;
ConsoleReporter.prototype.constructor = ConsoleReporter;
ConsoleReporter.prototype.specDone = function (o) {
o = o || {};
if (o.status !== "passed") {
console.warn("Failed: " + o.fullName + o.failedExpectations[0].message);
} else {
console.debug("Passed: " + o.fullName);
}
};
} else {
ConsoleReporter = jasmineRequire.ConsoleReporter();
options = {
timer: new jasmine.Timer,
print: function () {
console.log.apply(console,arguments)
}
};
}
} else {
ConsoleReporter = jasmine.ConsoleReporter;
options = console.log;
}
window.ConsoleReporter = ConsoleReporter;
consoleReporter = new ConsoleReporter(options); // initialize ConsoleReporter
env.addReporter(consoleReporter); // add reporter to execution environment