Как выполнить тесты мокко и мокко-phantomjs из одной команды "npm test" в node.js?
У меня есть несколько пакетов node, которые работают в среде node.js, а также в браузере. Теперь у меня есть два отдельных теста (для каждой среды). Каков наилучший способ запуска этих тестов с помощью команды npm test
? Также я хочу добавить эти пакеты в travis.
Я использую mocha
и mocha-phantomjs
.
Node команда тестирования
node ./node_modules/mocha/bin/mocha ./test/node/index.js --reporter spec
Команда проверки браузера
node ./node_modules/mocha-phantomjs/bin/mocha-phantomjs ./test/browser/index.html
Что я пробовал:
- Добавьте эти команды в
npm test
script, разделенные точкой с запятой
- Проблема: при возникновении ошибки в первом script, но без ошибки во втором script, команда, завершенная с 0 и конструкцией travis, прошла.
- Введите node командный тест в
npm test
script и создайте пользовательский script для тестов браузера. Затем добавьте эти две команды (npm test
и npm run-script test-browser
) в travis.yml как массив.
- Проблема. Пользователи должны запускать вручную два независимых тестовых сценария.
- Введите node командный тест в
npm test
script и добавьте тесты браузера в команду npm posttest
. Travis.yml будет иметь только один script, и пользователям также придется запускать один script (все довольны).
- Проблема: он просто не чувствует себя хорошо, поэтому я хотел знать, есть ли лучший способ.
Ответы
Ответ 1
Мне нравится следующее:
"scripts": {
"test": "npm run test-node && npm run test-browser",
"test-node": "mocha -R spec ./test/node/index.js",
"test-browser": "mocha-phantomjs ./test/browser/index.html"}
&&
работает только второй, если первый проходит, и вы можете запускать его отдельно, если хотите. Обратите внимание, что npm всегда использует относительный мокко (внутри node_modules), а не глобальный, поэтому нет вреда при прямом вызове mocha
и mocha-phantomjs
. Вы можете быть еще эффективнее с опцией mocha -b
для залога, который будет уходить, как только он столкнется с ошибкой.
Ответ 2
Здесь вы искали информацию о настройке npm
с помощью karma
. @dankohn answer можно настроить следующим образом:
"scripts": {
"test": "npm run test-node && npm run test-browser",
"test-node": "karma run",
"test-browser": "karma start --single-run"
}
Надеюсь, это поможет кому-то другому.
Ответ 3
Вы также можете использовать пакет npm-run-all
:
npm install npm-run-all --save-dev
"scripts": {
"test": "npm-run-all test-mocha test-mocha-phantomjs",
"test-mocha": "mocha ./test/node/index.js --reporter spec",
"test-mocha-phantomjs": "mocha-phantomjs ./test/browser/index.html"
}
Он будет запускать локальные копии mocha
и mocha-phantomjs
. Twitter bootstrap использует эту библиотеку для разработки.