我正在为 React Native 应用程序编写一些组件测试。我正在使用 expo
的BarCodeScanner
对于我的一个组件。在我的 jest
测试,我有一行写着 import { BarCodeScanner } from 'expo';
.仅此行(没有在我的测试代码中进一步使用它的任何内容)会导致以下错误:
The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.
任何人都知道如何导入
BarCodeScanner
到我的测试文件?
最佳答案
我做了一些挖掘,看来这是 Expo 和 Jest 的常见问题。目前有几个与 Jest 测试相关的问题未解决:
https://github.com/expo/expo/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+jest
这里的一个解决方案引起了我的兴趣:
https://github.com/expo/expo/issues/1705
如果您创建自己的 Jest 设置文件并在其中“require()”expo 组件并将 expo 和 expo-jest 降级到 v26,它就会出现。来自上面链接的示例:
包.json:
...
"jest": {
"preset": "jest-expo",
"setupTestFrameworkScriptFile": "./setupJest"
},
...
setupJest.js:
require('stacktrace-parser');
希望这对您有所帮助。如果您有任何疑问,请告诉我您的情况,如果可能的话,我会进一步挖掘:)
关于react-native - 测试运行器(开 Jest )未能导入 expo 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600781/