如何从node.js中的一个“npm test”命令运行mocha和mocha-phantomjstesting?
我有几个node.js环境和浏览器中的节点包。 现在我有两个单独的testing(针对每个环境)。 用npm test
命令运行这些testing的最好方法是什么? 另外我想将这些软件包添加到Travis。
我正在使用mocha
和mocha-phantomjs
。
节点testing命令
node ./node_modules/mocha/bin/mocha ./test/node/index.js --reporter spec
浏览器testing命令
node ./node_modules/mocha-phantomjs/bin/mocha-phantomjs ./test/browser/index.html
我试过的:
- 将这些命令添加到用分号分隔的
npm test
脚本中- 问题:当第一个脚本出现错误,但第二个脚本没有错误时,命令退出0,并通过travis构build。
- 让节点命令在
npm test
脚本中testing,并为浏览器testing创build自定义脚本。 将这两个命令(npm test
和npm run-script test-browser
)添加到travis.yml中作为数组。- 问题:用户必须手动运行两个独立的testing脚本。
- 让节点命令在
npm test
脚本中npm test
,并将浏览器testing添加到npm posttest
命令中。 Travis.yml只会有一个脚本,用户也需要运行一个脚本(每个人都很高兴)。- 问题:这只是感觉不对,所以我想知道是否有更好的方法。
我喜欢以下内容:
"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总是使用相对的mocha (在node_modules内),而不是全局的,所以直接调用mocha
和mocha-phantomjs
没有什么坏处。 你可以更有效地使用摩卡的-b
选项来保释,一旦遇到错误就会退出。
来这里寻找有关configurationnpm
与karma
。 @ dankohn的答案可以这样调整:
"scripts": { "test": "npm run test-node && npm run test-browser", "test-node": "karma run", "test-browser": "karma start --single-run" }
希望这可以帮助别人。
你也可以使用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引导使用这个库进行开发。