mocha テストの一般的な機能を除外するには、3 つの基本的なレベルがあります。一連のテストのためにいくつかのフィクスチャを 1 回ロードする場合 (そして、各テストを独立して記述した場合)、before
関数を使用して、ファイルの先頭にあるフィクスチャをロードします。beforeEach
フィクスチャを毎回再初期化する必要がある場合は、 functionを使用することもできます。
2 番目のオプション (これは関連しています) は、一般的な機能を別のファイルまたはファイルのセットに引き出し、そのファイルを必要とすることです。
最後に、mocha にはルート レベルのフックがあることに注意してください。
任意のファイルを選択して、「ルート」レベルのフックを追加することもできます。たとえば、すべての describe() ブロックの外側に beforeEach() を追加します。これにより、 beforeEach() へのコールバックが、それが存在するファイルに関係なく、テスト ケースの前に実行されます (これは、Mocha には「ルート スイート」と呼ばれる暗黙の describe() ブロックがあるためです)。
これを使用して Express サーバーを 1 回起動します (また、開発サーバーとは異なるポートで実行されるように環境変数を使用します)。
before(function () {
process.env.NODE_ENV = 'test';
require('../../app.js');
});
(require は同期的であるため、ここでは は必要ありませんdone()
。) これは、このルートレベルのbefore
関数が含まれる異なるテスト ファイルの数に関係なく、サーバーは 1 回だけ起動されるというものでした。
このように物事を分割する利点は、npm test
すべてのテストを実行するか、特定のファイルまたは特定のフォルダー、または特定のテストまたは一連のテスト (it.only および describe.only を使用) に対して mocha を実行できることです。選択したテストのすべての前提条件が実行されます。