Покрытие кода при взаимодействии с кукловодом + Стамбул - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть приложение, созданное с create-react-app и некоторыми тестами пользовательского интерфейса, написанными на Jest + Istanbul.

Я хочу получить покрытие кода этих тестов пользовательского интерфейса.Мне нравится продолжать использовать jest, поскольку я уже использую его для юнит-тестов.

Я бы не хотел выводить create-react-app, если это вообще возможно.Но я открыт для этого, если нет другого выбора.

То, что я пробовал до сих пор:

в package.json

"scripts": {
  "uitest": "react-scripts test --env=jsdom --verbose --testMatch='**/*.ui-test.{js}'",
}

, если я запускаю npm run uitest -- --coverage

attempt 1 failure

^ Я думаю, что в приведенном выше сценарии фиксируются только тесты, а не само приложение.

Как это исправить?


Другие неудачные попытки:

1) Как покрыть файлы React jsx в Стамбуле? - Не применять, поскольку я использую create-react-app

2) https://github.com/facebook/create-react-app/issues/3257 - очевидно, эта функция была предложена, но была отклонена.

3) https://github.com/istanbuljs/puppeteer-to-istanbul/issues/18 - Существует библиотека, называемая кукольником в Стамбул, но она не поддерживает исходные карты.(См. Ссылку для выпуска)

4) Я также посмотрел книгу Node.js Web Development - Четвертое издание о safaribooks - я нашел полезное руководство для Puppeteer, но это не таккажется, чтобы покрыть, покрытие кода.

5) Книга Практическая непрерывная интеграция и доставка на safaribooks - есть раздел, посвященный Puppeteer + Jest-тестированию, ничего не говорит о покрытии кода.

6) Я попытался puppeteer-to-istanbul -> Мы можем рассчитать покрытие кода для пакета таким образом, он не поддерживает карты-источники.

7) Попытка предложения Enselic, но не смогла заставить его работать.Кажется, что происходит сбой при push методе внутри пользовательской предустановки при попытке нажать babel-plugin-istanbul.

1 Ответ

0 голосов
/ 18 января 2019

В вашем package.json файле, похоже, отсутствует опция collectCoverageFrom .

Попробуйте вставить в свой package.json что-то вроде:

  "jest": {
    ...
    "collectCoverageFrom": [
      "src/**/*.{js,jsx}",
      "!**/setupTests.js",
      "!**/**/*.test.js"
    ],

Также рекомендуется пропустить покрытие для тестовых файлов, поскольку оно портит общее покрытие.Для этого случая используйте ! в массиве collectCoverageFrom, как показано в примере;)

...