Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Running.js_Javascript_Jasmine_Blanket.js - Fatal编程技术网

Javascript Running.js

Javascript Running.js,javascript,jasmine,blanket.js,Javascript,Jasmine,Blanket.js,我正在使用节点中的Jasmine以编程方式测试一些代码。为此,我设置了以下各项: function runTests() { var Jasmine = require('jasmine'); var jasmine = new Jasmine(); jasmine.loadConfig({ spec_dir: 'unit-tests', spec_files: [ 'tests-*.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();
当这些测试运行时,我希望获得代码覆盖率的详细信息。在尝试这一点时,我意外地发现。我的问题是,如何以编程方式输出代码覆盖率结果?使用上面的代码,我得到一个错误。错误只是说:

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”处于同一级别,测试位于“/unittests/tests.js”的子目录中。当上述操作运行时,将永远不会调用customerReporter代码。我不明白为什么。

试试custom reporter


似乎您需要将报告者添加到Jasmine环境中

jasmine.getEnv().addReporter(reporter);
来源:

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

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

.仍然无法从节点运行毯子。
library.js
看起来像什么?@EdinM library.js非常基本。我把它包括在上面。我试图孤立这个问题,所以我把它简化为上面的问题。不幸的是,这种方法对我不起作用。我在问题中的
TerminalReporter..
行上方添加了您的代码。因此,添加了以下块:
//设置coverage reporter var blanket=require('blanket')();blanket.customReporter=function(coverage_results){console.log(coverage_results);}我现在得到一个错误,上面写着:
错误:坏文件仪器指示器。必须是字符串、正则表达式、函数或数组。
我做错了什么?customReporter是一个函数。因此,即使我这样做,我仍然看不到代码的覆盖范围。我添加了
var-blanket=require(“blanket”)({“模式”:“/单元测试/”});工具({},函数(结果){console.log(结果);})但是,我看到一个错误,上面写着:
TypeError:无法读取未定义的
的属性“replace”。我很困惑。我只使用过一次毯子(还有摩卡单元测试)。我记得唯一棘手的部分是配置文件(我相信是package.json文件)。从总括页面显示require(“总括”)({/*可选选项*/});很抱歉现在没有我的电脑旅行-我想你已经知道了,但这是总括页面:谢谢分享。正确的说法是,配置内容放在package.json中。还有一个blanketjs页面,这也是正确的。我已经回顾了其中的每一个,但是,我仍然遇到一些问题。这让我想知道是否有什么东西发生了变化,而这些变化没有被记录下来,或者类似的东西。谢谢你的回复。我衷心感谢。特别是在假期里。我刚刚回顾了我是如何得到毛毯来生成报告的。我使用以下内容开始(从blanketjs.org页面链接到):我将以下package.json文件直接放在项目的根目录中:{“config”:{“blanket”:{“pattern”:[“directorycontainingcodeeneedingcoveragereport”],“data cover never”:[“node_modules”,“tests”]}}我对mocha(不是jasmine)使用了以下命令行参数:mocha-rchtmlcov-R
  "scripts": {
    "blanket": {
      "data-cover-flags": {
        "engineOnly":true
      }
    }
  }