Покрытие кода в Стамбуле для тестов Mocha
Я пытаюсь заставить Стамбул работать.
Я продолжаю получать это сообщение в конце запуска istanbul:
Информация о покрытии не была собрана, выход без записи информация
Я пробовал все, что мог найти в Интернете, как вы можете видеть:
"scripts": {
"start": "node ./bin/start.js",
"test": "mocha test --no-timeouts",
"debug_mocha": "node-debug --no-timeouts _mocha",
"eslint": "eslint .",
"jshint": "jshint --exclude ./node_modules .",
"istanbul": "istanbul cover --include-all-sources --hook-run-in-context node_modules/.bin/_mocha -- -u exports -R spec test/**/*",
"istanbul2":"istanbul cover node_modules/.bin/_mocha -- -u exports -R spec test/**/*",
"istanbul1":"istanbul cover node_modules/.bin/_mocha -- test/**/*",
"istanbul0":"istanbul cover _mocha test/**/*.js",
"istanbul3":"istanbul cover _mocha -- -R spec --recursive test"
}
my.istanbul.yml файл находится в корне проекта и выглядит как istanbul успешно подбирает его.
//.istanbul.yml
instrumentation:
compact: false
save-baseline: true
reporting:
reports:
- lcov
- cobertura
Что мне не хватает?
Ответы
Ответ 1
Получил это, наконец.
https://github.com/gotwarlost/istanbul/issues/44#issuecomment-57708358 говорит:
Использование _mocha напрямую не работает в Windows. Пожалуйста, используйте полный путь к JS файлу вместо
Затем, после небольшого эксперимента, победа:
istanbul cover C:/dev/my_project/node_modules/mocha/bin/_mocha --
Ответ 2
Попробуйте это, может работать для вас. Script в вашем пакете. json
"cover" : "NODE_ENV=test babel-node ./node_modules/babel-istanbul/lib/cli cover --dir ./coverage _mocha -- -R spec --ui bdd ./test/setup.js ./test --recursive"
setup.js будет ваша настройка javascript
./test будет папкой, в которой находятся все ваши тесты.
пакеты необходимо установить:
- babel-istanbul
- babel- node
- мокко
Это работает для меня:) (npm run cover)
Примечание:
если в Windows: удалите NODE_ENV = test и вам может понадобиться полный путь _mocha к папке модуля node
Ответ 3
Если вы создаете новый проект и пытаетесь заставить istanbul работать, убедитесь, что у вас есть хотя бы один тестовый файл, который ссылается, по крайней мере, на один из файлов проекта для istanbul, чтобы ссылаться на его отчет о покрытии.
"istanbul": "0.4.4",
"mocha": "3.0.0"
В моем случае я создавал новый проект и собирал первые index.js
и test/index.spec.js
файлы. Когда я попытался запустить:
"test": "istanbul cover --report html node_modules/mocha/bin/_mocha -- test/**/*.js --ui bdd -R spec"
Я получил вывод от mocha от всех тестов единичных тестов (которые еще не были выполнены тесты, но все 0 из них прошли), но после этого я получил эту ошибку:
Информация о покрытии не была собрана, выход без записи информации о покрытии
Проблема оказалась в том, что я еще не добавил файл require
для файла index.js
в файле test/index.spec.js
. В Стамбуле не было файлов для ссылки из тестовых файлов, чтобы проверить информацию о покрытии.
Если это ошибка в _mocha, указанная в npm script, появится дополнительное сообщение "SyntaxError:", которое следует за сообщением "Нет информации о покрытии".