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