如何从node.js中的一个“npm test”命令运行mocha和mocha-phantomjstesting?

我有几个node.js环境和浏览器中的节点包。 现在我有两个单独的testing(针对每个环境)。 用npm test命令运行这些testing的最好方法是什么? 另外我想将这些软件包添加到Travis。

我正在使用mochamocha-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 

我试过的:

  1. 将这些命令添加到用分号分隔的npm test脚本中
    • 问题:当第一个脚本出现错误,但第二个脚本没有错误时,命令退出0,并通过travis构build。
  2. 让节点命令在npm test脚本中testing,并为浏览器testing创build自定义脚本。 将这两个命令( npm testnpm run-script test-browser )添加到travis.yml中作为数组。
    • 问题:用户必须手动运行两个独立的testing脚本。
  3. 让节点命令在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内),而不是全局的,所以直接调用mochamocha-phantomjs没有什么坏处。 你可以更有效地使用摩卡的-b选项来保释,一旦遇到错误就会退出。

来这里寻找有关configurationnpmkarma 。 @ 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" } 

它将运行mochamocha-phantomjs本地副本。 Twitter引导使用这个库进行开发。