Покрытие кода в модульных тестах
Я пытаюсь выяснить, какие строки кода мои модульные тесты не охватывают.
Я делаю свои модульные тесты с 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