40


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

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

4

4 回答 4

29

您是否尝试过 ConsoleReporter?

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

根据代码,Jasmine 有一个 ConsoleReporter 类,该类执行一个打印功能(在本例中为 console.log),它应该可以满足您的需求。

如果一切都失败了,您可以以此为起点来实现您自己的 console.log 报告器。

更新在较新版本的 jasmine 中,ConsoleReporter 已被删除。您可以使用内置的 jsApiReporter,也可以编写自己的(控制台)报告器,如以下链接所示:https ://jasmine.github.io/tutorials/custom_reporter

于 2011-08-23T08:19:36.923 回答
15

在最新版本的 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。 来源

于 2014-01-09T21:39:34.523 回答
6

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());
于 2015-11-19T04:25:13.703 回答
6

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

首先运行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);
于 2017-06-19T14:26:59.900 回答