2017-07-26 1 views
10

(mocha + chaiの代わりに)私のサーバーユニットテストにjestを使いたい。 すべてのテストが開始する前に(initの目的)、すべてのテストファイルではなく1回だけ非同期関数を実行できる方法はありますか?また、すべてのテストが完了した後に何かを実行する方法がある場合は?すべてのテストの前にJCEが非同期機能を実行する

答えて

3

あなたはNPMと冗談テストを実行する場合は、

"scripts": { 
    "test": "node setup.js && jest" 
    } 

他のコマンドを実行する前に、任意のノードのコマンドまたは任意の実行可能ファイルを実行することができますので、今あなたが

$ npm t 
+1

ありがとうございましたが、私はJestソリューションを探していました。 Mochaのように、BeforeAllをグローバルなスコープに置くことができます.Jestはこれと似たようなことを望んでいました。 – Roy

+0

この解決策は問題ありませんが、これは ' - watch 'モードで実行されることはありません。 Jestソリューションはありますか? – Wajahath

2

コマンドでこれを実行することができます冗談はbeforeAllを提供し、 afterAlltest/itの場合と同様に、関数が約束を返した場合、解決することを約束します。

beforeAll(() => { 
    return new Promise(resolve => { 
    // Asynchronous task 
    // ... 
    resolve(); 
    }); 
}); 

あなたはコールバックを使用して、いくつかの既存のテストコードを持っている場合、約束を使用することをお勧めしますが、それはまた、コールバックスタイルをサポートしています。

beforeAll(done => { 
    // Asynchronous task 
    // ... 
    done(); 
}); 
+0

[Jest 'beforeAll'](https://facebook.github.io/jest/docs/en/api.html#beforeallfn-timeout)は素晴らしい、特にre:Promises"関数が約束を返すかジェネレータJestはテストを実行する前にその約束が解決するのを待つ」ジャスミンには同等のものがありますか? JasmineはPromisesをサポートしていないようですが、[done *コールバックのアプローチをサポートしていますか?](https://jasmine.github.io/2.1/introduction.html#section-Asynchronous_Support)分度器を使用していますが、 'done'コールバックは私のためには機能しません(ここに記載されています)(https://stackoverflow.com/a/34892316/1175496)、 –

2

この機能はglobalSetupglobalTeardown構成で、Jest's 22 versionに追加されました。

関連する問題