ReferenceError: Вы пытаетесь "импортировать" файл после разрушения среды Jest. - PullRequest
0 голосов
/ 11 июня 2018

У меня есть компонент, который использует Animated компонент из реакционной системы.Я начал писать тестовый пример для имитации onPress компонента, который вызывает функцию с Animated.timing, а setState.

с jest работает нормально, но тесты никогда не прекращаютсяработает, и один несвязанный тестовый пример, который я написал раньше, кажется, никогда не проходит (который прошел раньше).

работает jest --watch, я получаю эту ошибку:

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)

Ссылка на repl

https://repl.it/repls/PartialGrimyMetadata

Среда:

  • ОС: Linux 4.14
  • Узел: 6.14.2
  • Пряжа: 1.7.0
  • npm: 3.10.10
  • Сторож: нетНайдено
  • Xcode: N / A
  • Android Studio: Не найдено

Ответы [ 2 ]

0 голосов
/ 28 августа 2019

jest.useFakeTimers ()

Учитывая вышесказанное, очень важно понимать это

jest.useFakeTimers () осуществляет макет setTimeout и других функций таймера с помощью имитирующих функций.

Если выполняется несколько тестов внутри одного файла или блока описания, jest.useFakeTimers ();можно вызывать перед каждым тестом вручную или с помощью функции настройки, например beforeEach.

В противном случае внутренний счетчик использования не будет сброшен.

0 голосов
/ 11 июня 2018

ОК, нашел решение.

Следует использовать jest.useFakeTimers()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...