回答:
編集:このオプションは廃止されました:https : //mochajs.org/#mochaopts
mocha
コマンドラインで実行するだけでそれを実行したい./server-tests
が./test
、の代わりにフォルダーでテストを実行したい場合./test/mocha.opts
は、ファイル内にこれだけでファイルを作成します。
server-tests
そのフォルダとサブディレクトリのすべてを実行したい場合は、これを test/mocha.opts
server-tests
--recursive
mocha.opts
コマンドラインを介して渡される引数なので、最初の行をテストを変更したいディレクトリだけにすると、リダイレクトされます ./test/
mocha.opts
ファイルは、あなたがしたい場所に置き、その後、簡単に実行することができますmocha
例えばを通じて、設定ファイルへのパスを指定:mocha --opts ./mocha.opts
これを使って:
mocha server-test
または、サブディレクトリがある場合はこれを使用します。
mocha "server-test/**/*.js"
二重引用符の使用に注意してください。それらを省略すると、サブディレクトリでテストを実行できない場合があります。
mocha test/server-test
mocha ./**/*.test.js
(テストファイルをモジュールファイルと同じ場所に配置できるようにするため)。他のテストとはファイル階層の別のレベルにテストファイルを追加すると、パターンが機能しなくなり、階層内の同じレベルにある他のダースボールファイルが1つだけ見つかり、他のファイルは見つかりませんでした。引用符で囲むと修正されました。
--recursive
以下で説明するように使用する
ここに1つの方法があります。テストフォルダーにサブフォルダーがある場合などです。
/test
/test/server-test
/test/other-test
Linuxでは、findコマンドを使用してすべての* .jsファイルを再帰的にリストし、それをmochaに渡すことができます。
mocha $(find test -name '*.js')
--recursive
以下で説明するように使用する
mocha
、configで目的のディレクトリ構造を設定するオプションがないということです。
これを行うための良い方法は、適切な引数でmochaを呼び出す "test" npmスクリプトをpackage.jsonに追加することです。このように、package.jsonはテスト構造も記述します。また、他の回答(二重引用符と単一引用符の比較、「検索」など)でこれらのクロスプラットフォームの問題をすべて回避します。
mochaに「test」ディレクトリ内のすべてのjsファイルを実行させるには:
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
次に、煙のテストのみを実行するには、次を呼び出します。
npm test
この方法ですべてのプロジェクトのすべてのテストの実行を標準化できるため、新しい開発者がプロジェクトまたは別のプロジェクトを開始すると、「npm test」がテストを実行することがわかります。これには歴史的な優先順位があります(Maven、たとえば、ほとんどの古い学校の "make"プロジェクトも)。すべてのプロジェクトに同じテストコマンドがある場合、CIは確実に役立ちます。
同様に、mochaで実行する高速な「煙」テストのサブセットがある場合があります。
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
次に、煙のテストのみを実行するには、次を呼び出します。
npm smoketest
別の一般的なパターンは、テストをテストするソースと同じディレクトリにテストを配置することですが、テストファイルは* .spec.jsを呼び出します。たとえば、src / foo / foo.jsはsrc / foo / foo.spec.jsによってテストされます。
慣例により* .spec.jsという名前のすべてのテストを実行するには:
"scripts": {
"test": "mocha **/*.spec.js"
},
次に、すべてのテストを実行するには、次を呼び出します。
npm test
こちらのパターンをご覧ください。良い。:)一貫性はmuraを破ります。
-gまたは--grepオプションを使用しないでください。そのパターンは、ファイルシステムではなく、it()内のテストの名前で機能します。現在のドキュメントは、これに関して誤解を招くか、完全に間違っています。コマンド全体をファイルシステムの一部に制限するには、最後の引数としてパターンを渡します(フラグではありません)。
たとえば、次のコマンドはレポーターをspecに設定しますが、server-testディレクトリ内のjsファイルのみをテストします。
mocha --reporter spec server-test/*.js
このコマンドは、上記と同じことを行います。さらに、テストのit()文字列/定義が「Fnord:」で始まるテストケースのみを実行します。
mocha --reporter spec --grep "Fnord:" server-test/*.js
test_directory
一致するサブディレクトリを含むすべてのファイルを実行しますtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
または--recursive
スイッチを使用する
mocha --recursive test_directory/
今では(2020年)モカ構成ファイルを使用してこれを処理できます:
ステップ1:ルートの場所に.mocharc.jsファイルを作成するアプリケーションのにする
ステップ2:以下のコードをmocha構成ファイルに追加します。
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
設定ファイルのその他のオプションについては、このリンクを参照してください:https : //github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
node.js v0.10.0、mocha v1.8.2、npm v1.2.14を使用しているWindows 7を使用しています。私はモカにパステスト/ユニットを使用してテストを見つけさせようとしていただけでした。
「test / unit / *。js」オプションを使用しても、Windowsでは機能しません。Windowsシェルがunixenのようなワイルドカードを展開しないという正当な理由があります。
ただし、「test / unit」を使用すると、ファイルパターンがなくても機能します。例えば。「mocha test / unit」は、test / unitフォルダーにあるすべてのファイルを実行します。
これはまだテストとして1つのフォルダーファイルのみを実行しますが、パラメーターとして複数のディレクトリ名を渡すことができます。
また、単一のテストファイルを実行するには、完全パスとファイル名を指定できます。例えば。「mocha test / unit / mytest1.js」
私は実際にnpm "scripts":{"test": "mocha test / unit"}のpackage.jsonで設定しました、
そのため、「npm test」はユニットテストを実行します。
--recursive
、次のようなオプションを:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
Windows上で作品を。またnode_modules\.bin\mocha "**\*.js"
動作します(私の実際のケース)。しかし、node_modulesディレクトリを除外する方法を探しています。(私もgulpfile.jsを使用していますが、モカで直接テストを起動する必要がある場合があります)
あなたが使用している場合はnodejs
、あなたの中package.json
の下scripts
global (-g)
インストール:"test": "mocha server-test"
または"test": "mocha server-test/**/*.js"
サブ文書についてproject
インストール:"test": "node_modules/mocha/bin/mocha server-test"
または"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
サブ文書について次に、通常どおりにテストを実行します npm test
npm run mocha "./test/*.spec.js!(~)"
グロブ引数を無視することがわかりましたが、無視node_modules/.bin/mocha "./test/*.spec.js!(~)"
しません。
npm run mocha -- yourArgs
@ jeff-dickeyが示唆するように、プロジェクトのルートにというフォルダーを作成しますtest
。そのフォルダーに、次のファイルを作成します。mocha.opts
。私がジェフの答えを改善しようとすると、1つのテストフォルダーの名前を指定する代わりに、次の行を追加して、プロジェクトで実行するすべてのテストを見つけるためのパターンを指定しました。
*/tests/*.js --recursive
に mocha.opts
代わりに、テストを検索する正確なフォルダーを指定する場合は、次のようにしました。
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
これが他の答えが提供するものよりも多くを必要とする人を助けることを願っています
.only
し.skip
て管理できるかを示しています走っている。特定の機能の開発中に、テストスイート全体が常に実行されるのを待ちたくない場合に重要です。