Покрытие кода в Стамбуле для тестов 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:", которое следует за сообщением "Нет информации о покрытии".