我有一个组件使用来自 React Native 的 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)
链接到回复
https://repl.it/repls/PartialGrimyMetadata
环境:
- 操作系统:Linux 4.14
- 节点:6.14.2
- yarn :1.7.0
- npm:3.10.10
- 守望者:未找到
- Xcode:不适用
- Android Studio:未找到
最佳答案
好的,找到解决方案。
应该使用jest.useFakeTimers()
注意:将上面的代码放在测试文件中的 import
部分之后。
关于javascript - 引用错误 : You are trying to `import` a file after the Jest environment has been torn down,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50793885/