Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

8.9K
Views
ReferenceError: You are trying to `import` a file after the Jest environment has been torn down

I have a component that makes use of Animated component from react native. I started writing a test case to simulate onPress of a component, which calls a function that has Animated.timing in it, and setState.

running jest works fine, but the tests never stops running, and one unrelated test case that I've written before never seem to pass now (which passed before).

running jest --watch, I get this 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)

Link to repl

https://repl.it/repls/PartialGrimyMetadata

Environment:

  • OS: Linux 4.14
  • Node: 6.14.2
  • Yarn: 1.7.0
  • npm: 3.10.10
  • Watchman: Not Found
  • Xcode: N/A
  • Android Studio: Not Found
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

OK, found a solution.

Should use jest.useFakeTimers()

Note: Put the code above just after import section in your test file.

over 4 years ago · Santiago Trujillo Report

0

jest.useFakeTimers()

With above it's extremely important to understand this

jest.useFakeTimers() mocks out setTimeout and other timer functions with mock functions.

If running multiple tests inside of one file or describe block, jest.useFakeTimers(); can be called before each test manually or with a setup function such as beforeEach.

Not doing so will result in the internal usage counter not being reset.

over 4 years ago · Santiago Trujillo Report

0

I would like to contribute to the answer.

Well let's see the error message

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

Torn down means: Jest already finished running and some part of your code is trying to execute after jest torn down or exited your test. This is pretty common on Javascript due to its asynchronous nature.

Sometimes it happens after a promise callback getting executed for example:

import { someProcess} from 'a-library'

task.job().then(result => {
    someProcess(result)
})

In the example above the code imports someProcess from a-library

If the method job from the task object takes longer than the jest execution its callback (then() invocation) will run outside jest because jest has continued. Therefore when someProcess gets executed it will be loaded from a-library so jest will complain that you are trying to load a library after jest has been torn.

The answer marked as the solution is partially right because calling jest.useFakeTimers() will prevent your code to wait the n seconds you supposed to wait calling setTime or similars making your code artificially sincrhonoyus

Making your test await those method calls would help you understand better your code.

The code that worked for me was

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")
        })
})

In my real scenario my code was getting data from firebase, because am not using mocks for this test it was trying to import firebase after .get() data read returned so marking the test as async and calling the method with await keyword solved my problem

Of course there are a lot of ways to dealing with this error, just wanted you to know the true reason behind this error so you can work in the right solution for your tests!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!