J'ai quelques paquets de nœuds qui fonctionnent dans l'environnement node.js et également dans le navigateur. Maintenant, j'ai deux tests séparés (pour chaque environnement). Quelle est la meilleure façon d'exécuter ces tests avec juste npm test
commande? Je veux également ajouter ces packages à travis.
J'utilise mocha
et mocha-phantomjs
.
commande de test de nœud
node ./node_modules/mocha/bin/mocha ./test/node/index.js --reporter spec
commande de test du navigateur
node ./node_modules/mocha-phantomjs/bin/mocha-phantomjs ./test/browser/index.html
Ce que j'ai essayé:
npm test
script séparé par un point-virgule npm test
script et créer un script personnalisé pour les tests du navigateur. Ajoutez ensuite ces deux commandes (npm test
et npm run-script test-browser
) dans travis.yml en tant que tableau. npm test
script et ajouter des tests de navigateur à npm posttest
commande. Travis.yml n'aura alors qu'un seul script et les utilisateurs devront également exécuter un script (tout le monde est content). J'aime ce qui suit:
"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"}
Le &&
n'exécute la seconde que si la première passe, et vous pouvez exécuter l'une ou l'autre séparément si vous le souhaitez. Notez que npm utilise toujours mocha relatif (à l'intérieur de node_modules), pas le global, donc il n'y a aucun mal à simplement appeler mocha
et mocha-phantomjs
directement. Vous pouvez être encore plus efficace avec le -b
option de caution, qui s'arrêtera dès qu'il rencontrera une erreur.
Entré ici à la recherche d'informations sur la configuration de npm
avec karma
. @ réponse de dankohn peut être adapté ainsi:
"scripts": {
"test": "npm run test-node && npm run test-browser",
"test-node": "karma run",
"test-browser": "karma start --single-run"
}
J'espère que cela aide quelqu'un d'autre.
Vous pouvez aussi utiliser npm-run-all
paquet:
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"
}
Il exécutera des copies locales de mocha
et mocha-phantomjs
. Twitter bootstrap utilise cette bibliothèque pour le développement.