web-dev-qa-db-ja.com

node.jsの1つの「npm test」コマンドからmochaおよびmocha-phantomjsテストを実行する方法は?

Node.js環境およびブラウザでも動作するノードパッケージはほとんどありません。これで、2つの個別のテスト(環境ごとに)ができました。 npm testコマンドだけでこれらのテストを実行する最良の方法は何ですか?また、これらのパッケージをtravisに追加したいと思います。

mochamocha-phantomjsを使用しています。

ノードテストコマンド

node ./node_modules/mocha/bin/mocha ./test/node/index.js --reporter spec

ブラウザテストコマンド

node ./node_modules/mocha-phantomjs/bin/mocha-phantomjs ./test/browser/index.html

私が試したもの:

  1. これらのコマンドをセミコロンで区切られたnpm testスクリプトに追加します
    • 問題:最初のスクリプトにエラーがあり、2番目のスクリプトにエラーがない場合、コマンドは0で終了し、travisビルドはパスしました。
  2. npm testスクリプトでノードコマンドをテストし、ブラウザーテスト用のカスタムスクリプトを作成します。これらの2つのコマンド(npm testおよびnpm run-script test-browser)をtravis.ymlに配列として追加するよりも。
    • 問題:ユーザーは、2つの独立したテストスクリプトを手動で実行する必要があります。
  3. Nodeコマンドでnpm testスクリプトでテストし、ブラウザーテストをnpm posttestコマンドに追加します。 Travis.ymlはスクリプトを1つだけ持つことになり、ユーザーも1つのスクリプトを実行する必要があります(誰もが満足しています)。
    • 問題:気分が悪いので、もっと良い方法があるかどうか知りたかった。
57
David Kudera

私は次が好きです:

  "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"}

&&は、最初のパスが成功した場合にのみ2番目を実行し、必要に応じて個別に実行できます。 npmは常にグローバルではなく relative mocha (node_modules内)を使用するため、mochamocha-phantomjsを直接呼び出すだけで害はありません。 mochaの保釈用の-bオプションを使用すると、さらに効率的になります。エラーが発生するとすぐに終了します。

77
Dan Kohn

npmkarmaを構成するための情報を探してここに来ました。 @ dankohn's answer は次のように適応できます。

"scripts": {
  "test": "npm run test-node && npm run test-browser",
  "test-node": "karma run",
  "test-browser": "karma start --single-run"
}

これが他の誰かの助けになることを願っています。

4
Drew Noakes

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 bootstrapは開発にこのライブラリを使用します。

0