Ketika saya ingin menjalankan proyek saya dengan perintah npm run test
, saya mendapatkan kesalahan di bawah ini. Apa yang menyebabkan ini?
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>)
javascript
node.js
npm
jestjs
amirdehghan
sumber
sumber
http://localhost:port...
,?jest
konfigurasi :-)Jawaban:
Dalam hal, jika Anda mengakses aplikasi Anda dengan
http://localhost
awalan, Anda perlu memperbarui konfigurasi lelucon Anda (di Andajest.config.js
) sebagai,Jika Anda belum memiliki konfigurasi lelucon, cukup sertakan konfigurasi di
package.json
. Sebagai contoh:atau di
jest.config.js
:atau jika Anda telah
projects
mengkonfigurasi:sumber
jest
halaman github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Berguna jika Anda tidak dapat mengatur konfigurasi jest global karena lingkungan lain (bereaksi skrip untuk saya).testUrl
bekerja.Saya baru saja memotong ini di monorepo besar (dalam unit test, yang sebaliknya tidak akan diperlukan jsdom). Menyetel secara eksplisit hal-hal berikut dalam kami
jest.config.js
(atau yangpackage.json
setara) juga meringankan masalah itu:Pembaruan: Seperti yang disebutkan Nicolas di bawah (terima kasih!), Anda juga dapat menambahkan flag berikut jika Anda tidak menggunakan file konfigurasi:
sumber
jest --testEnvironment node
atau singkatannyajest --env=node
, intead.testURL
.Anda harus menentukan lingkungan apa (
--env
) yang akan Anda gunakan.Ketika Anda menjalankan
jest
perintah di,package.json
Anda harus menentukan lingkungan (jsdom
ataunode
). Sebagai contoh:Ini seharusnya bekerja untuk Anda!
sumber
env
via config atau commandline atau tidak. Ini hanya mulai terjadi dengan pembaruan terbaru jest hari ini. Silakan lihat jawaban @ David R untuk solusi jika ini yang Anda alami.Jika Anda menggunakan jsdom, pastikan Anda memasukkan url.
Lihat opsi sederhana repositori jsdom. https://github.com/jsdom/jsdom#simple-options
sumber
var jsdom = require('jsdom'); var exposedProperties = ['window', 'navigator', 'document']; const { JSDOM } = jsdom; const {document } = (new JSDOM('',{ url: "https://localhost/",})).window; global.document = document;
package.json
. Sebagai contoh, kode ini bisa disimpan dalamtestHelper.ts
file yang disebut dan menggunakan mocha:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.Saran dalam jawaban teratas
testURL: "http://localhost"
untuk menambahkan ke konfigurasi Jest saya tidak bekerja untuk saya. Namun, saran dari diskusi jsdom GitHub ini , untuk meneruskan URL ketika membuat objek jsdom, berhasil.sumber
bagi saya ini diselesaikan dengan memutakhirkan ke "lelucon": "^ 24.9.0",
sumber
Ini mungkin terdengar konyol, tetapi bagi saya, masalah itu disebabkan karena saya keliru menginstal paket acak
npm update
. Saya berlarinpm install
dan kemudiannpm update
tetapi saya seharusnya hanya berlarinpm install
. Saya memperbaiki masalah dengan menghapusnode_modules
direktori dan menjalankannpm install
lagi.sumber
npm install
dengan benar karena proxy perusahaan. Jadi, pola akan belum selesainpm install
asiAnda tidak perlu melakukan apa pun saat bekerja dengan Bereaksi JS. Ini adalah perilaku default aplikasi create-react-app untuk menempatkan JEST dan mengatur lingkungan pengujian. Saat menjalankan di bawah ini, itu mulai menunjukkan keberhasilan tes atau gagal,
Jika Anda ingin cakupan pengujian, Anda hanya perlu menambahkan di bawah ini ke file package.json
}
sumber
Ini muncul dengan saya ketika berintegrasi
enzyme
denganjest
. The Github Isu Diskusi menyarankan sama seperti disebutkan di atas, yaitu menambahkanke konfigurasi lelucon. Namun, ada baiknya mengetahui bahwa ini dipicu juga oleh enzim. Bagi saya itu React v15 dan adaptor v15.
sumber
Saya memiliki masalah yang sama dan menempatkan ini di
package.json
file saya berfungsi untuk saya:sumber
Untuk mengatasi
Jest SecurityError: localStorage
kesalahan, Anda perlu menambahkanjest: { ... }
bagian ke file package.json Andasumber