Cuando quiero ejecutar mi proyecto con el comando npm run test
, aparece el siguiente error. ¿Qué está causando esto?
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
fuente
fuente
http://localhost:port...
?jest
configuración :-)Respuestas:
En caso de que esté accediendo a su aplicación con un
http://localhost
prefijo, debe actualizar su configuración de broma (en sujest.config.js
) como,En caso de que aún no tenga ninguna configuración de broma, simplemente incluya la configuración en su
package.json
. Por ejemplo:o en
jest.config.js
:o si has
projects
configurado:fuente
jest
página de github: github.com/facebook/jest/issues/6766jest --testURL=\"http://localhost\"
. Útil si no puede establecer una configuración global de broma debido a otro entorno (react-scripts para mí).testUrl
trabajó.Acabo de tener esto surgiendo en un gran monorepo (en pruebas unitarias, que de lo contrario no hubieran requerido jsdom). Establecer explícitamente lo siguiente en nuestro
jest.config.js
(o elpackage.json
equivalente) también alivió ese problema:Actualización: como Nicolas menciona a continuación (¡gracias!), También puede agregar los siguientes indicadores si no está utilizando ningún archivo de configuración:
fuente
jest --testEnvironment node
o su abreviaturajest --env=node
, intead.testURL
.Debe especificar qué entorno (
--env
) va a utilizar.Cuando ejecute el
jest
comando enpackage.json
, debe especificar el entorno (jsdom
onode
). Por ejemplo:¡Esto debería funcionar para ti!
fuente
env
vía config o línea de comando. Esto solo comenzó a suceder con la última actualización de jest hoy. Consulte la respuesta de @David R para obtener una solución si este es el caso para usted.Si está utilizando jsdom, asegúrese de incluir la URL.
Verifique las opciones simples del repositorio jsdom. https://github.com/jsdom/jsdom#simple-options
fuente
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
. Por ejemplo, este código podría ser guardado en untestHelper.ts
archivo y llama utilizando moka:scripts: { test-setup: 'mocha --compilers ts:ts-node/register,tsx:ts-nocde/register --require testHelper.ts --reporter progress' }
.La sugerencia en la respuesta mejor calificada de agregar
testURL: "http://localhost"
a mi configuración de Jest no funcionó para mí. Sin embargo, esta sugerencia de la discusión jsdom GitHub , de pasar una URL al crear el objeto jsdom, lo hizo.fuente
para mí esto se resolvió actualizando a "broma": "^ 24.9.0",
fuente
Esto puede sonar tonto, pero para mí, el problema fue causado porque había instalado por error paquetes aleatorios con
npm update
. Estaba corriendonpm install
y luego,npm update
pero solo debería haber corridonpm install
. Solucioné el problema eliminando elnode_modules
directorio y ejecutándolonpm install
nuevamente.fuente
npm install
correctamente debido al proxy de la empresa. Entonces, el patrón sería unanpm install
acción incompletaNo necesita hacer nada mientras trabaja con React JS. El comportamiento predeterminado de create-react-app es colocar JEST y configurar el entorno de prueba. Al ejecutarse a continuación, comienza a mostrar que la prueba fue exitosa o fallida,
En caso de que desee una cobertura de prueba, simplemente necesita agregar a continuación al archivo package.json
}
fuente
Esto apareció conmigo al integrarse
enzyme
conjest
. La discusión del problema de Github sugiere lo mismo que se señaló anteriormente, es decir, agregara la configuración de broma. Sin embargo, es bueno saber que esto también se desencadena por la enzima. Para mí fue React v15 y el adaptador v15.
fuente
Tengo el mismo problema y colocar esto en mi
package.json
archivo funcionó para mí:fuente
Para resolver el
Jest SecurityError: localStorage
error, debe agregar lajest: { ... }
parte a su archivo package.jsonfuente