web-dev-qa-db-ja.com

--env = jsdomとは

コマンドjestを使用して、反応ネイティブアプリケーションのテストスイートを実行していました。

テストは、行のファイルjest-runtime/build/index.jsで失敗します

const wrapper = this._environment.runScript(transformedFile.script)[
(_script_transformer || _load_script_transformer()).default.EVAL_RESULT_VARIABLE];

エラーで:

TypeError: Cannot read property 'Object.<anonymous>' of null

私のバージョンのjestは21.2.1です。

とにかく、グーグルで調べたところ、誰かがjest --env=jsdomを実行していることがわかりました。私はそれを試してみると、私のテストスイートが機能し始めました。

しかし、このオプションはどういう意味ですか?

jsdom はDOMおよびHTML標準の実装であることは知っています。

しかし、これは冗談にどのように役立ちますか?これでテストがパスするように、jestの動作はどのように変わりますか?

8
octavian

Jestはノードモジュールであり、ブラウザではなくローカルマシン(またはCI環境)で実行されるため、ノードコンテキストで実行されます。つまり、windowdocumentなどのブラウザコンテキスト内でアクセスできるグローバルは使用できません。したがって、コード内(またはlocalStorageなどの他のブラウザ固有の機能など)内でこれらのグローバルオブジェクトにアクセスする場合、テストは失敗する必要があります。 オプション--env=jsdomは、モックブラウザー環境がテストに提供されることを保証し、テストの合格を可能にします。

12
smonusbonus