Mochaはデフォルトでテストファイルを検索しようとしますがtest
、別のディレクトリを指定するにはどうすればよいserver-test
ですか?
15 に答える
これを使って:
mocha server-test
または、サブディレクトリがある場合は、これを使用します。
mocha "server-test/**/*.js"
二重引用符の使用に注意してください。それらを省略すると、サブディレクトリでテストを実行できない場合があります。
編集:このオプションは非推奨です:https ://mochajs.org/#mochaopts
mocha
コマンドラインで実行するだけで実行したいが、./server-tests
ではなくフォルダーでテストを実行したい場合は、ファイルにこれだけを./test
使用してファイルを作成します。./test/mocha.opts
server-tests
そのフォルダとサブディレクトリ内のすべてを実行したい場合は、これをtest/mocha.opts
server-tests
--recursive
mocha.opts
はコマンドラインを介して渡される引数であるため、最初の行をテストを変更するディレクトリだけにすると、リダイレクト元になります./test/
テストフォルダにサブフォルダがある場合の1つの方法は次のとおりです。
/test
/test/server-test
/test/other-test
次に、Linuxでは、findコマンドを使用して、すべての* .jsファイルを再帰的にリストし、それをmochaに渡すことができます。
mocha $(find test -name '*.js')
これを行う良い方法は、正しい引数でmochaを呼び出す「テスト」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
この方法ですべてのプロジェクトのすべてのテストの実行を標準化できるため、新しい開発者がプロジェクトなどで開始したときに、「npmtest」がテストを実行することがわかります。これには歴史的に優れた優先順位があります(たとえば、ほとんどの古い学校の「make」プロジェクトもMavenです)。すべてのプロジェクトに同じテストコマンドがある場合、CIに役立ちます。
同様に、mochaに実行させたいより高速な「スモーク」テストのサブセットがある場合があります。
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
次に、スモークテストの呼び出しのみを実行します。
npm smoketest
もう1つの一般的なパターンは、テストをテストするソースと同じディレクトリに配置し、テストファイルを*.spec.jsと呼ぶことです。例:src / foo/foo.jsはsrc/foo/foo.spec.jsによってテストされます。
慣例により*.spec.jsという名前のすべてのテストを実行するには:
"scripts": {
"test": "mocha **/*.spec.js"
},
次に、すべてのテスト呼び出しを実行します。
npm test
ここのパターンを見ますか?良い。:)一貫性は村を打ち負かします。
-gまたは--grepオプションは使用しないでください。このパターンは、ファイルシステムではなく、it()内のテストの名前に基づいて動作します。現在のドキュメントは、これに関して誤解を招く、および/または完全に間違っています。コマンド全体をファイルシステムの一部に制限するには、最後の引数としてパターンを渡すことができます(フラグではありません)。
たとえば、このコマンドはレポーターを仕様に設定しますが、server-testディレクトリ内のjsファイルのみをテストします。
mocha --reporter spec server-test/*.js
このコマンドは上記と同じように動作しますが、テストのit()文字列/定義が「Fnord:」で始まるテストケースのみを実行します。
mocha --reporter spec --grep "Fnord:" server-test/*.js
node.jsの場合、Mocha v6以降のいくつかの新しい構成:
オプション1:.mocharc.json
プロジェクトのルートディレクトリに作成します。
{
"spec": "path/to/test/files"
}
オプション2:mocha
プロジェクトにプロパティを追加しますpackage.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
その他のオプションはこちらです。
test_directory
一致するサブディレクトリを含むすべてのファイルを実行しますtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
または--recursive
スイッチを使用します
mocha --recursive test_directory/
現在、日(2020年)は、 mocha構成ファイルを使用してこれを処理できます。
ステップ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
私はちょうど今この問題を抱えていて、--recursive
オプション(私が設定した)を削除し、上記で提案された同じ構造を使用することによってそれを解決しました:
mochify "test/unit/**/*.js"
/test/unit/
これは、内の他のディレクトリを無視しながら、私のために下のすべてのディレクトリですべてのテストを実行しました/test/
コメントで@superjosが述べたように、
mocha --recursive "some_dir"
私は、node.jsv0.10.0とmochav1.8.2およびnpmv1.2.14を使用しているWindows7を使用しています。私はモカにパステスト/ユニットを使って自分のテストを見つけさせようとしていました。長い時間をかけて着陸したいくつかのことを試した後、
「test/unit / *。js」オプションの使用は、Windowsでは機能しません。Windowsシェルがunixenのようなワイルドカードを拡張しないという正当な理由があります。
ただし、「test / unit」の使用は、ファイルパターンなしで機能します。例えば。「mochatest/unit」は、test/unitフォルダーにあるすべてのファイルを実行します。
これでも、テストとして1つのフォルダーファイルのみが実行されますが、パラメーターとして複数のディレクトリ名を渡すことができます。
また、単一のテストファイルを実行するために、フルパスとファイル名を指定できます。例えば。「mochatest/unit/mytest1.js」
私は実際にpackage.jsonでnpm"scripts":{"test": "mocha test / unit"}、
そのため、「npmtest」は単体テストを実行します。
を使用している場合は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
これは、テストディレクトリを変更するための「簡単な」サポートではないようです。ただし、質問に関連して、この問題
を確認する必要があるかもしれません。
@ jeff-dickeyが提案したように、プロジェクトのルートに、という名前のフォルダーを作成しますtest
。そのフォルダに、というファイルを作成しますmocha.opts
。ジェフの答えを改善しようとすると、1つのテストフォルダーの名前を指定する代わりに、次の行を追加して、プロジェクトで実行するすべてのテストを検索するパターンを指定しました。
*/tests/*.js --recursive
のmocha.opts
代わりに、テストを検索する正確なフォルダーを指定する場合は、次のようにします。
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
これが、他の回答が提供する以上のものを必要としている人に役立つことを願っています
Windowsの別のオプションは、cross-env
パッケージを使用し、次のnpmスクリプトを使用することです。package.json
"scripts": {
"test": "cross-env mocha '*.test.js'"
},
"devDependencies": {
"cross-env": "latest",
}
この場合、ルートフォルダにパターン* .test.jsがあるすべてのテストファイルは、mochaによって実行されます。