Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

8.9K
Visualizações
ReferenceError: Estás intentando `importar` un archivo después de que el entorno Jest haya sido derribado

Tengo un componente que utiliza el componente Animated de React Native. Comencé a escribir un caso de prueba para simular onPress de un componente, que llama a una función que tiene Animated.timing y setState .

ejecutar jest funciona bien, pero las pruebas nunca dejan de ejecutarse, y un caso de prueba no relacionado que he escrito antes parece que nunca pasa ahora (que pasó antes).

ejecutando jest --watch , aparece este error:

 ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. at Function.bezier (node_modules/react-native/Libraries/Animated/src/Easing.js:113:21) at ease (node_modules/react-native/Libraries/Animated/src/Easing.js:34:24) at TimingAnimation._easing (node_modules/react-native/Libraries/Animated/src/Easing.js:133:18) at TimingAnimation.onUpdate (node_modules/react-native/Libraries/Animated/src/animations/TimingAnimation.js:107:45) RUNS src/__tests__/SlideDownMenu.test.js /home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native/Libraries/Animated/src/Easing.js:114 return _bezier(x1, y1, x2, y2); ^ TypeError: _bezier is not a function at Function.bezier (/home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native/Libraries/Animated/src/Easing.js:224:12) at ease (/home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native/Libraries/Animated/src/Easing.js:94:21) at TimingAnimation._easing (/home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native/Libraries/Animated/src/Easing.js:255:16) at TimingAnimation.onUpdate (/home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native/Libraries/Animated/src/animations/TimingAnimation.js:138:14) at ontimeout (timers.js:386:11) at tryOnTimeout (timers.js:250:5) at Timer.listOnTimeout (timers.js:214:5)

Enlace para replicar

https://repl.it/repls/PartialGrimyMetadata

Medioambiente:

  • Sistema operativo: Linux 4.14
  • Nodo: 6.14.2
  • Hilo: 1.7.0
  • npm: 3.10.10
  • Vigilante: no encontrado
  • Código X: N/A
  • Android Studio: no encontrado
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Bien, encontré una solución.

Debería usar jest.useFakeTimers()

Nota: Coloque el código de arriba justo después de la sección de import en su archivo de prueba.

over 4 years ago · Santiago Trujillo Relatório

0

jest.useFakeTimers()

Con lo anterior, es extremadamente importante entender esto.

jest.useFakeTimers() se burla de setTimeout y otras funciones de temporizador con funciones simuladas.

Si ejecuta varias pruebas dentro de un archivo o describe un bloque, jest.useFakeTimers(); se puede llamar antes de cada prueba manualmente o con una función de configuración como beforeEach.

De lo contrario, el contador de uso interno no se restablecerá.

over 4 years ago · Santiago Trujillo Relatório

0

Me gustaría contribuir a la respuesta.

Bueno, veamos el mensaje de error.

ReferenceError: You are trying to 'import' a file after the Jest environment has been torn down.

Derribado significa: Jest ya terminó de ejecutarse y una parte de su código está tratando de ejecutarse después de que Jest derribó o salió de su prueba. Esto es bastante común en Javascript debido a su naturaleza asíncrona.

A veces sucede después de que se ejecuta una devolución de llamada de promesa, por ejemplo:

 import { someProcess} from 'a-library' task.job().then(result => { someProcess(result) })

En el ejemplo anterior, el código importa someProcess de a-library

Si el job del método del objeto de la task tarda más que la ejecución de jest, su devolución de llamada (invocación de then()) se ejecutará fuera de jest porque jest ha continuado. Por lo tanto, cuando se ejecuta someProcess , se cargará desde a-library por lo que jest se quejará de que está intentando cargar una biblioteca después de que jest se haya roto.

La respuesta marcada como la solución es parcialmente correcta porque llamar a jest.useFakeTimers() evitará que su código espere los n segundos que se supone que debe esperar llamando a setTime o similares haciendo que su código se sincronice artificialmente

Hacer que su prueba await esas llamadas de método lo ayudaría a comprender mejor su código.

El código que funcionó para mí fue

 describe("Some test set " , ()=>{ let heavyWorkinService = library.workingService(); // We are marking the test function call as async test(("Name of the test"), async ()=>{ // we are awaiting heavyWorkingService to done its job await hevyWorkingService("some data") }) })

En mi escenario real, mi código estaba obteniendo datos de async , porque no estoy usando simulacros para esta prueba, estaba tratando de importar await después de que .

Por supuesto, hay muchas maneras de lidiar con este error, ¡solo quería que supiera la verdadera razón detrás de este error para que pueda trabajar en la solución correcta para sus pruebas!

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda