グローバルフックやユーティリティを定義する helper.js ファイルを Mocha にロードさせるにはどうすればよいですか? 質問する

グローバルフックやユーティリティを定義する helper.js ファイルを Mocha にロードさせるにはどうすればよいですか? 質問する

test/helper.jsNode.js アプリで Mocha テストを実行するために使用する という名前のファイルがあります。テストの構造は次のようになります。

test/
test/helper.js    # global before/after
test/api/sometest.spec.js
test/models/somemodel.spec.js
... more here

このファイルhelper.jsにはテスト スイートのグローバル フックが含まれているため、読み込む必要があります。次のようにして、Mocha を実行してテスト スイート全体を実行します。

mocha --recursive test/

ファイルhelper.jsはテストの前に読み込まれ、beforeフックは期待どおりに実行されます。

ただし、特定のテストを 1 つだけ実行する場合、helper.jsテストの前には読み込まれません。実行方法は次のとおりです。

mocha test/api/sometest.spec.js

グローバルbeforeは呼び出されず、 さえも呼び出されませんconsole.log('I WAS HERE');

では、どうすればモカにいつもファイルを読み込みますhelper.jsか?

ベストアンサー1

helper.jsMocha には、他のファイルより先に読み込まれる特別なファイルという概念はありません。

mocha --recursiveあなたがしようとしていることは、Mochaの順序によって実行時に機能します起こるファイルをロードします。helper.js他のファイルより1レベル高いため、最初にロードされます。Mochaに個別のファイルを指定すると、Mochaはこのファイルそして、ご存じのとおり、ファイルhelper.jsはまったく読み込まれていません。

beforeしたがって、トップレベル (「グローバル」) フック ( 、など)を設定するようにファイルをロードする必要がありますafter。オプション:

  1. 使用できるMochaをプログラム的に必要な順序でファイルを入力できます。

  2. コマンドラインでヘルパーファイルを常に指定するように強制することもできます初め他のファイルをリストする前に。(私はこれを行いませんが、可能です。)

  3. もう一つの選択肢は、私が詳細に説明したようにスイートを整理することです。この答え基本的に、スイートの残りを読み込む「トップレベル」のファイルが 1 つあります。この方法では、個々のファイルで Mocha を実行する機能は失われますが、 を使用して--grep実行する内容を選択できます。

あなたできないオプションを使用します-r。スイートを実行する前にモジュールがロードされますが、残念ながら、ロードされたモジュールは、Mocha がテストに提供するテスト インターフェースのいずれにもアクセスできないため、フックを設定できません。

おすすめ記事