Покрытие кода в модульных тестах

Я пытаюсь выяснить, какие строки кода мои модульные тесты не охватывают.

Я делаю свои модульные тесты с mocha, который предлагает репортер "json-cov", который должен сообщить, сколько строк я не выполнил.

У меня есть два файла, первый (foo.js):

module.exports = function () {
    for (var result = 0, i = 0; i < arguments.length; i++) {
        result += arguments[i];
    }
    return result;
}

и второй (test.js):

var expect = require('expect.js'),
    jsc = require('jscoverage'),
    //foo = require('./foo.js');
    foo = jsc.require(module, './foo.js');

describe('foo', function () {
    it('should add all arguments', function () {
        expect(foo(1,1)).to.be(2);
    });
});

Когда я бегу mocha -R json-cov test.js Я получаю следующий результат:

{
  "instrumentation": "node-jscoverage",
  "sloc": 0,
  "hits": 0,
  "misses": 0,
  "coverage": 0,
  "files": [],
  "stats": {
    "suites": 1,
    "tests": 1,
    "passes": 1,
    "pending": 0,
    "failures": 0,
    "start": "2013-01-30T18:00:15.785Z",
    "end": "2013-01-30T18:00:15.787Z",
    "duration": 2
  },
  "tests": [
    {
      "title": "should add all arguments",
      "fullTitle": "foo should add all arguments",
      "duration": 1
    }
  ],
  "failures": [],
  "passes": [
    {
      "title": "should add all arguments",
      "fullTitle": "foo should add all arguments",
      "duration": 1
    }
  ]
}

Что я делаю не так, так что sloc, попадания, промахи и охват равны 0?

Я также пытался использовать узлы require вместо ао, без успеха.

РЕДАКТИРОВАТЬ: я только что попробовал mocha -R json-cov test.js --coverage что приводит к ошибке, если я использую JSCS require, Когда я использую узлы require результат такой же, как указано выше.

РЕДАКТИРОВАТЬ: я даже не могу запустить jscoverage из консоли. Я создал папку foo и foo-cov и скопировал мой файл foo.js в папку foo. Потом я побежал jscoverage foo foo-cov который дал мне ошибку abs source path or abs dest path needed!, Я также попробовал абсолютные пути и несколько других способов расположить аргументы. Нет успеха Как я могу подготовить файлы для jscoverage?

РЕДАКТИРОВАТЬ: Если это имеет какое-либо отношение, я использую Windows.

РЕДАКТИРОВАТЬ: Только что понял, что не только один пакет "jscoverage" доступны через npm, но также и "visionmedia-jscoverage". Попытка установить это не удалась. Вероятно, из-за Windows против Linux.

РЕДАКТИРОВАТЬ: получил его на работу. Вместо того, чтобы использовать пакет узлов для подготовки кода, я теперь просто запускаю jscoverage.exe (скачанный отсюда) из консоли, а затем mocha -R html-cov test.js > coverage.html, Теперь у меня есть проблема, что некоторый код экранируется. Итак, я получаю

<span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span>

вместо

var foo = {

с подсветкой.

РЕДАКТИРОВАТЬ: теги были экранированы, потому что они были обработаны с помощью нефрита шаблона с этим кодом: td.source= line.source

Меняя это на td.source!= line.source исправляет эту последнюю проблему, которая у меня была.

2 ответа

Решение

Следуйте моим изменениям, чтобы увидеть, что я сделал, чтобы решить эту проблему.

Проблема с кодом выхода может быть решена без необходимости редактирования jade-шаблона mocha с помощью параметра "--no-highlight" для jscoverage следующим образом:

jscoverage --no-highlight foo foo-cov
Другие вопросы по тегам