react-native - 测试运行器(开 Jest )未能导入 expo 模块

标签 react-native jestjs expo

我正在为 React Native 应用程序编写一些组件测试。我正在使用 expoBarCodeScanner对于我的一个组件。在我的 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/

相关文章:

javascript - 过滤器认为具有辅助号码的联系人

android - React Native Android 应用程序在启动时崩溃

android - 如何在没有人窃取 token 的情况下使用我的移动应用程序中的 API

reactjs - 使用 Jest 模拟 API 错误响应时,组件中的 Fetch 未定义

react-native - expo 弹出后在项目上运行 react-native start 时出错

javascript - 如何将我的 expo 应用程序发布到 Apple 应用商店?

javascript - ES6 导入/导出未按预期运行

node.js - 在 CircleCI : "npm test died unexpectedly" 上运行 Jest 时出错

javascript - 如何测试从父组件传递的子组件中的回调单击?

expo - 错误 ITMS-90596 : Invalid Bundle. 无法处理 'Payload/ExpoKitApp.app/.bundle/Assets.car' 处的 Assets 目录