javascript - testurl - unmockedmodulepathpatterns




Jest SecurityError:localStorageは不透明な起源には使用できません (6)

React JSを使っている間は何もする必要はありません。 JESTを配置してテスト環境をセットアップするのは、create-react-appのデフォルトの動作です。 以下の実行で、テストの成功または失敗を示し始めます、

NPMテスト

テストカバレッジが必要な場合は、単にpackage.jsonファイルに以下を追加する必要があります。

"test": "react-scripts test --coverage" package.jsonの "script"は次のようになります。

"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --coverage",
"eject": "react-scripts eject"

}

コマンド npm run test を使用してプロジェクトを実行しようとすると、以下のエラーが発生します。 これは何の原因ですか?

FAIL
 Test suite failed to run

SecurityError: localStorage is not available for opaque origins at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
      at Array.forEach (<anonymous>)

jsdomを使用している場合は、必ずURLを含めてください。

jsdomリポジトリの簡単なオプションをチェックアウトする。 https://github.com/jsdom/jsdom#simple-options

const jsdom = require("jsdom");
const { JSDOM } = jsdom;

const dom = new JSDOM(`...`, { url: "https://example.org/" });

これは愚かに聞こえるかもしれませんが、私にとっては、私が誤ってランダムパッケージを npm update インストールしたために問題が発生しました。 npm install してから npm update を実行しましたが、 npm install だけを実行したはずです。 node_modules ディレクトリを削除し、再度 npm install を実行して問題を解決しました。


使用する環境( --env )を指定する必要があります。

package.json jest コマンドを実行するときには、環境( jsdom または node )を指定する必要があります。 例えば:

  "scripts": {
    "jest": "jest --env=node --colors --coverage test",
    "test": "npm run jest"
  },

これはあなたのために働くはずです!


jest enzyme を統合 enzyme とき、これは私と一緒に現れました。 Github Issue Discussion は上記と同じこと、すなわち追加することを示唆しています

"testURL": "http://localhost/"

jestの設定へ。 しかし、これは酵素によっても引き起こされることを知っておくのは良いことです。 私にとってそれはReact v15とv15アダプターでした。


testURL: "http://localhost" を私のJestの設定に追加するという testURL: "http://localhost" 答えの中の提案は testURL: "http://localhost" ませんでした。 しかし、jsdomオブジェクトを作成するときにURLを渡すという 、jsdom GitHubのディスカッションからのこの提案は行いまし た。

const url = 'http://localhost';

const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', { url });




jestjs