javascript - 运行毯.js

标签 javascript jasmine blanket.js

我正在使用 Node.js 中的 Jasmine 以编程方式测试一些代码。为此,我进行了以下设置:

function runTests() {
    var Jasmine = require('jasmine');
    var jasmine = new Jasmine();    

    jasmine.loadConfig({
        spec_dir: 'unit-tests',
        spec_files: [
            'tests-*.js'
        ]
    });

    var blanket = require('blanket')();

    var TerminalReporter = require('jasmine-terminal-reporter');
    var reporter = new TerminalReporter({});
    jasmine.addReporter(reporter);      

    jasmine.execute();  
}

runTests();

当这些测试运行时,我想获取代码覆盖率详细信息。在尝试此操作时,我偶然发现了 blanket.js 。我的问题是,如何以编程方式输出代码覆盖率结果?使用上面的代码,我得到一个错误。该错误只是说:

Error: Bad file instrument indicator.  Must be a string, regex, function, or array.
为什么?我究竟做错了什么?

更新

在我的 package.son 文件中,我有以下部分:

"config": {
  "blanket": {      
    "data-cover-flags": {
      "engineOnly":true
    }
  }      
}

我已经更新了我的 runTests 函数,如下所示:

function runTests() {
    var Jasmine = require('jasmine');
    var jasmine = new Jasmine();    

    jasmine.loadConfig({
        spec_dir: 'unit-tests',
        spec_files: [
            'tests-*.js'
        ]
    });

    // Setup the coverage reporter
    var blanket = require("blanket")();
    var blanketReporter = function(coverageData) {
        console.log(coverageData);
    };
    blanket.customReporter = blanketReporter;

    blanket.instrument({
        inputFile: 'library.js'
    }, function(result) { });

    var TerminalReporter = require('jasmine-terminal-reporter');
    var reporter = new TerminalReporter({});
    jasmine.addReporter(reporter);      

    jasmine.execute();  
}

library.js

'use strict';

class Processor
{
    execute(vals) {
      let result = 0;
      vals.forEach(function(v) {
        result += v;
      });
      return result;
    }
}
module.exports = Processor;

上面的代码位于一个名为“main.js”的文件中,我通过从控制台窗口调用 node main.js 来运行该文件。 “library.js”处于同一级别,测试位于“./unit-tests/tests.js”的子目录中。当上面的代码运行时,customerReporter 代码永远不会被调用。我不明白为什么。

最佳答案

https://github.com/alex-seville/blanket/issues/248

如果您未在 package.json 中指定以下内容,blanket 会抛出“错误文件工具指示符。必须是字符串、正则表达式、函数或数组。”错误。一旦你需要('毯子');从节点内的任何位置。

  "scripts": {
    "blanket": {
      "data-cover-flags": {
        "engineOnly":true
      }
    }
  }

关于javascript - 运行毯.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34325711/

相关文章:

javascript - 获取 SVG 中路径的维度

javascript - 如何将 Blanket.js 与使用 jQuery.noConflict(true) 运行的 QUnit 测试一起使用

node.js - 结合 javascript 中的代码覆盖率报告以获得工作服

javascript - 如何在php中自动输入MySQL数据(输入第1列数据到自动输入同一列的第2列数据)?

JavaScript:滚动 iframe 直到具有焦点的 div 出现在 iframe 的中心

作为参数传递时,Javascript isNaN 返回未定义

使用 toHaveBeenCalled 进行 Angular Jasmine 测试

angular - 如何使用 Jasmine 测试多个顺序调用

node.js - AngularJS:Karma + Jasmine 使用 _real_ 后端进行测试

mocha.js - 如何在 sailsjs 中使用 blanket 和 mocha 进行测试覆盖