Javascript 将jasmine测试结果输出到控制台

Javascript 将jasmine测试结果输出到控制台,javascript,firefox-addon,javascript-framework,jasmine,Javascript,Firefox Addon,Javascript Framework,Jasmine,我在firefox插件中使用Jasmine(针对JavaScript的BDD测试框架)来测试代码的功能 问题是jasmine正在将测试结果输出到HTML文件,我需要的是Firebug控制台或其他解决方案来输出结果 你试过这个吗 根据代码,Jasmine有一个ConsoleReporter类,它执行一个打印函数(在本例中是console.log),该函数应该满足您的需要 如果所有其他操作都失败,您可以将其作为实现自己的console.log reporter的起点。在最新版本中,如果您希望将测试输


我在firefox插件中使用Jasmine(针对JavaScript的BDD测试框架)来测试代码的功能

问题是jasmine正在将测试结果输出到HTML文件,我需要的是Firebug控制台或其他解决方案来输出结果

你试过这个吗

根据代码,Jasmine有一个ConsoleReporter类,它执行一个打印函数(在本例中是console.log),该函数应该满足您的需要

如果所有其他操作都失败,您可以将其作为实现自己的console.log reporter的起点。

在最新版本中,如果您希望将测试输出添加到console,则需要添加以下行

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。

JasmineRequeste.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());

为了完整起见,以下是完整的配置:

首先运行
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
}
由于助手是在规范之前执行的,所以您唯一要做的就是创建console reporter助手

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

您是否为iPhone安装了Jasmine???如果是,ConsoleReporter是否可以在iPhone的控制台中获得输出?它可以,但请注意您使用的是哪个版本的Jasmine。提供的ConsoleReporter github链接指向ConsoleReporter.js的主分支版本,该版本使用不同的reporter API作为Jasmine的当前(1.3.1)官方版本(例如JasmineStart或jasmineDone,而不是reportRunnerStarting等)。如果它不适合您,您可能需要选择v1.3.1标签(或使用链接)。通过Guard运行Jasmine(使用PhantomJS)我尝试将上述内容添加到测试的
descripe
块中,但得到“找不到变量:JasmineRequest”@DaveSag将其添加到
boot.js
。这太可笑了,因为它与
jasmine
有多么复杂。为什么不在
jasmine.json
中添加
“color”:“true”
选项?就像在
mocha
中一样,只需在配置文件中键入
--color
在Jasmine 2.8.0下为我工作:)我在创建
jsapiexporter
之后将其添加到
boot.js
。我删除了
var env=…
行,因为
env
已经存在。您是否愿意添加一些解释来帮助我更好地理解
jsapiexporter
MyReporter
之间的相互作用?
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);