Подтвердить что ты не робот

Запуск Blanket.js

Я тестирую программный код с помощью Jasmine с Node. Для этого я установил следующее:

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 никогда не вызывается. Я не понимаю, почему.

4b9b3361

Ответ 1

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

Если вы не укажете ниже в своем пакете. json, то одеяло выдает "индикатор инструмента плохих файлов. Должен быть строка, регулярное выражение, функция или массив". ошибка. Как только вы захотите ( "одеяло" ); из любого места в пределах node.

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