Mocha デフォルトでtest
の下にテストファイルを見つけようとしますが、どうすれば別のディレクトリを指定できますか。 server-test
?
コマンドラインでmocha
を実行するだけでそれを実行したいが、./server-tests
ではなくフォルダ./test
でテストを実行したい場合は、次のファイルを./test/mocha.opts
に作成します。
server-tests
そのフォルダとサブディレクトリですべてを実行したい場合は、これをtest/mocha.opts
に入れます。
server-tests
--recursive
mocha.opts
はコマンドラインを介して渡される引数なので、最初の行をテストを変更したいディレクトリにするだけでも./test/
からリダイレクトされます。
これを使って:
mocha server-test
あるいはサブディレクトリがある場合はこれを使います。
mocha "server-test/**/*.js"
二重引用符の使用に注意してください。それらを省略した場合、サブディレクトリでテストを実行することができないかもしれません。
テストフォルダにサブフォルダがある場合、これが1つの方法です。
/test
/test/server-test
/test/other-test
それから、Linuxではfindコマンドを使ってすべての* .jsファイルを再帰的にリストしてmochaに渡すことができます。
mocha $(find test -name '*.js')
-gや--grepオプションを使用しないでください。そのパターンは、ファイルシステムではなく、その内部のテストの名前で動作します。現在の文書はこれに関して誤解を招くか、または完全に間違っています。コマンド全体をファイルシステムの一部に限定するために、最後の引数としてパターンを渡すことができます(フラグではありません)。
たとえば、次のコマンドはレポーターをspecに設定しますが、server-testディレクトリのすぐ内側にあるjsファイルのみをテストします。
mocha --reporter spec server-test/*.js
このコマンドは上記と同じ動作をします。加えて、it()文字列/テストの定義が "Fnord:"で始まるテストケースのみを実行します。
mocha --reporter spec --grep "Fnord:" server-test/*.js
これを行う良い方法は、正しい引数でmochaを呼び出すpackage.jsonに "test" npmスクリプトを追加することです。このようにあなたのpackage.jsonはあなたのテスト構造も記述します。また、他の答え(二重引用符と一重引用符、 "find"など)におけるこれらのクロスプラットフォームの問題をすべて回避します。
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を確実に支援します。
同様に、モカに実行させたいかもしれないより速い「煙」テストのサブセットがあるかもしれません:
"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
ここの模様を見ますか?良い。 :)一貫性が破られる 村 。
test_directory
に一致するサブディレクトリを含むtest.js
内のすべてのファイルを実行します
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
または--recursive
スイッチを使う
mocha --recursive test_directory/
私は今この問題を抱えていて、(私が設定した)--recursive
オプションを削除し、上で提案したのと同じ構造を使用することによってそれを解決しました:
mochify "test/unit/**/*.js"
これは/test/unit/
内の他のディレクトリを無視しながら私のために/test/
の下のすべてのディレクトリですべてのテストを実行しました
node.jsにある場合、Mocha v6以降のいくつかの新しい構成:
オプション1:プロジェクトのルートディレクトリに.mocharc.json
を作成します。
{
"spec": "path/to/test/files"
}
オプション2:プロジェクトのpackage.json
にmocha
プロパティを追加します。
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
その他のオプションは ここ です。
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
として普通にテストを実行してください。
私はWindows 7上でnode.js v0.10.0とmocha v1.8.2そしてnpm v1.2.14を使っています。私はモカに私のテストを見つけるのにpath test/unitを使わせようとしていました。
"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'は私のユニットテストを実行します。
コメントで@superjosによって述べられているように
mocha --recursive "some_dir"
@ jeff-dickeyが示唆しているように、プロジェクトのルートにtest
というフォルダを作ります。そのフォルダに、mocha.opts
というファイルを作成します。私がJeffの答えを改善しようとしたところ、私にはうまくいったのはただ一つのテストフォルダの名前を指定する代わりに、この行を追加することによって私のプロジェクトで実行するすべてのテストを見つけるためのパターンを指定しました。
*/tests/*.js --recursive
のmocha.opts
あなたが代わりにテストを探すために正確なフォルダを指定したいならば、私はこのようなことをしました:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
私はこれが他の答えが提供するもの以上のものを必要としている誰にでも役立つことを願います
これはテストディレクトリを変更するための「簡単な」サポートではないようです。
しかし、多分あなたは質問に関連して この号 を見てみるべきです。