将茉莉花测试结果输出到控制台

Yos*_*osi 39 javascript firefox-addon javascript-framework jasmine


我在我的firefox附加组件中使用Jasmine(用于JavaScript的BDD测试框架)来测试我的代码的功能.

问题是茉莉正在将测试结果输出到HTML文件,我需要的是Firebug Console或其他输出结果的解决方案.

Tig*_*ine 29

你试过ConsoleRepoter吗?

jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log));
Run Code Online (Sandbox Code Playgroud)

根据代码,Jasmine有ConsoleReporter类来执行打印功能(在本例中为console.log),它应该做你需要的.

如果所有其他方法都失败了,您可以将此作为实现自己的console.log记者的起点.

  • 它有效,但要注意你正在使用的Jasmine版本.提供的ConsoleReporter github链接指向ConsoleReporter.js的主分支版本,它使用不同的报告API作为Jasmine的当前(1.3.1)正式版本(例如jasmineStarted或jasmineDone而不是reportRunnerStarting等).如果它不适合你,你可能需要选择v1.3.1标签(或使用[this](https://github.com/pivotal/jasmine/blob/v1.3.1/src/console/ConsoleReporter.js)链接). (2认同)

Paw*_*ech 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
Run Code Online (Sandbox Code Playgroud)

默认情况下包含输出到html,所以如果您根本不需要html输出,则必须编辑boot.js文件并从那里删除相关行.如果要自定义输出在控制台编辑文件console.js中的显示方式. 资源


Fra*_*ula 6

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

首先运行npm install命令:

npm install jasmine-console-reporter --save-dev
Run Code Online (Sandbox Code Playgroud)

然后检查您的 Jasmine 配置以确保您在那里设置了助手:

spec/support/jasmine.json

{
    "spec_dir": "spec",
    "spec_files": [
        "**/*[sS]pec.js"
    ],
    "helpers": [
        "helpers/**/*.js"
    ],
    "stopSpecOnExpectationFailure": false,
    "random": false
}
Run Code Online (Sandbox Code Playgroud)

由于助手在规范之前执行,因此您唯一要做的就是创建一个控制台报告助手。

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);
Run Code Online (Sandbox Code Playgroud)


HMR*_*HMR 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());
Run Code Online (Sandbox Code Playgroud)