Как запустить покрытие кода на стороне клиента Javascript с помощью сценариев Npm

1

У меня есть веб-приложение на стороне клиента, написанное на базовом javascript, которое должно запускаться в модифицированном браузере Chrome в другом приложении. Код широко реорганизован для работы в текущей настройке и обновлен для использования функций ES6. У старой версии было некоторое мокко-тестирование на основе браузера с использованием Grunt.

Теперь я хочу добавить тесты (и переписать их в случае необходимости) в новую настройку и добавить покрытие кода и заменить сценарии Grunt на npm.

До сих пор мне удалось переписать несколько тестов и запустить их, используя:

./node_modules/babel-cli/bin/babel.js js --out-dir tmp/js --source-maps./node_modules/babel-cli/bin/babel.js test --out-dir tmp/test --source-maps./node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/test-spec.html spec <some options>

Это дает результаты тестов. Они все проходят.

Теперь я хотел бы добавить покрытие, используя nyc, но я не знаю, как заставить его работать. Я нашел мокко-фантомийс-итанбул, но это, кажется, использует мокко-фантомы (устаревшие) и istanbul 1.x (устарело).

Что мне нужно сделать, чтобы добавить покрытие кода в эту конфигурацию?

Теги:
mocha
phantomjs
nyc

1 ответ

0

У меня нет слишком большого опыта работы с istanbul и nyc, но некоторое время назад мне удалось получить рабочую среду, которая выглядела так: Inside my Package.json У меня есть несколько сценариев. Те, которые для покрытия выглядят следующим образом:

scripts : {
    "test:c": "set NODE_ENV=test&& npm run coverage",
    "coverage": "./node_modules/.bin/nyc --reporter=lcov --reporter=text mocha test/*.* --compilers js:babel-core/register --recursive"
}

Я запускаю тестовый сценарий: c, который устанавливает переменную NODE_ENV, а затем запускает сценарий покрытия. Все тесты находятся внутри тестового каталога. и установлен флаг --compilers js: babel-core/register ", поэтому код становится прямым с помощью es6. Похоже, вы уже делаете это с помощью первых двух скриптов, поэтому можете пропустить эту часть.

Кстати, это на окнах. Если я правильно помню в системе unix, вы прямо устанавливаете NODE_ENV таким образом "NODE_ENV = test". Кроме того, если вы выполняете аналогичную настройку, будьте осторожны, например, как "set NODE_ENV = test && npm запустить другой скрипт", потому что это установит NODE_ENV на "тест" вместо "test" и не будет использовать плагины.

Я использую следующие зависимости:

"mocha": "3.2.0",
"nyc": "^11.0.2",
"babel-plugin-istanbul": "^4.1.4",

здесь также есть моя.babelrc config:

{
  "presets": [
    ["es2015", { "modules": false }],
    "stage-0",
    "airbnb"
  ],
  "env": {
    "test": {
      "plugins": [
        ["istanbul", {
          "exclude": [
            "**/*.spec.js",
            "webpack.config.js"
          ]
        }]
      ]
    }
  }
}

важной частью, возможно, является конфигурация плагина istanbul, который используется, когда NODE_ENV установлен для проверки. и эта связанная с ним конфигурация является частью моего пакета. json:

  "nyc": {
    "include": [
      "src/**/*.js"
    ],
    "exclude": [
      "shared/src/**/*.js"
    ],
    "require": [
      "babel-core/register"
    ],
    "sourceMap": false,
    "instrument": false
  },

в любом случае, для удобства может показаться хорошей идеей написать отдельные скрипты внутри пакета json, а затем связать их вместе с помощью другого скрипта, вызывающего их следующим образом:

"script3" :   "npm run script1 && npm run script2"
  • 0
    Извините, я, должно быть, произвел неправильное впечатление. Я знаю, как создавать и использовать сценарии npm, хотя ваше объяснение довольно хорошее и обширное. Я ищу сценарий или несколько сценариев, которые могут делать что-то вроде 'nyc phantomjs mocha test-runner.html'. Этот пример не работает, и я еще не нашел правильную комбинацию.
  • 0
    О, я понимаю, я думал использовать фантомы просто так, как вы работали до сих пор. У меня нет опыта работы с фантомами. Надеюсь, кто-то еще может помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню