私のnpmパッケージでは、Meteorのパターンをエミュレートしたいと思います。ソースファイル(client.js
という名前)には、client.tests.js
フォルダーにテストファイル(src/
という名前)があります。テストはnpm test
コマンドで実行されます。
私は、使用法のドキュメントを「t」に従っています。パッケージテストコマンドでfind
を使用したくありません。
Mochaはテストを再帰的に実行できることを理解しています。
mocha-再帰的
Mochaは--recursive
フラグを使用して特定のサブフォルダーでテストを実行できることを理解しています。
mocha src-再帰的
また、*.tests.js
を渡すことで、ファイルをフィルタリングするためにglobを指定できることも理解しています。
mocha * .tests.js
しかし、3つすべてが必要です。 mochaは、srcフォルダー内でtests.js
で終わるファイルのみをテストし、サブディレクトリーを再帰的にチェックしたいです。
mocha --recursive *.tests.js
// See the files?
$ > ll ./src/app/
total 168
-rw-r--r-- ... client.js
-rw-r--r-- ... client.tests.js
// Option A
$ > mocha --recursive *.tests.js
Warning: Could not find any test files matching pattern: *.tests.js
No test files found
// Option B
$ > mocha *.tests.js --recursive
Warning: Could not find any test files matching pattern: *.tests.js
No test files found.
// Option C
$ > mocha --recursive src/app/*.tests.js
3 passing (130ms)
3 failing
そう...
*.tests.js
ファイルを取得しないのはなぜですか?--recursive
フラグは、ディレクトリを操作するためのものです。ディレクトリに一致するグロブを渡す場合、これらのディレクトリは再帰的に検査されますが、ファイルに一致するグロブを渡す場合、あなたがしているように、--recursive
は無効です。 --recursive
をglobで使用しないことをお勧めします。globにはすでにサブディレクトリを再帰的に表示する機能があるためです。できること:
mocha 'src/app/**/*.tests.js'
これは、*.tests.js
でsrc/app
に再帰的に一致するすべてのファイルに一致します。パターンを単一引用符で囲んでいることに注意してください。これは、Mochaのグロビングコードにそのまま渡されるようにパターンを引用することです。そうしないと、シェルがそれを解釈する可能性があります。一部のシェルは、オプションに応じて、**
を*
に変換しますが、必要な結果が得られません。