web-dev-qa-db-ja.com

jestを使用する場合のjsdomのセットアップ方法

AVAからJestに移行しようとしています。 AVAでは、jsdom環境を設定するava.setupを設定できます。たとえば、DOM構造を作成し、必要なポリフィル(localStorage)を実行します。

Jestでそれを行うにはどうすればよいですか?現在、私は各テストスイートでbeforeEachを使用していますが、これは最適なソリューションとは思えません。

前もって感謝します!

13
Gal Ziv

すばらしい質問です。

Jestは実際にはjsdomと環境がすでに構成された状態で出荷されます(testEnvironmentsetting でオーバーライドできます)。

ただし、環境のさまざまな側面を設定する必要がある場合は、setupTestFrameworkScriptFilesetting を使用して、すべてのテストが実行される前に実行されるファイルを指定できます。

たとえば、すべてのテストのウィンドウでwindow.yourVarを使用できるようにする必要がある場合は、これをpackage.jsonに追加します。

"jest": {
    "setupTestFrameworkScriptFile": "tests/setup.js"
}

そしてtests/setup.jsで:

Object.defineProperty(window, 'yourVar', { value: 'yourValue });
22
Rick Hanlon II