我正试图在用Expo创建的应用程序中包含测试,但我在使用AsyncStorage模块时遇到错误
Could not find module '@react-native-async-storage/async-storage' from 'src/pages/Welcome.tsx'
为了避免这个错误,我测试了jest/expo的一些配置,如在项目的GitHub问题中建议的那样,将jest降级到26版本,使用此处和此处官方文档中建议的mock目录,并使用jest设置文件。详细信息如下。
当我尝试使用mock目录时,错误中没有任何变化。执行过程将忽略mock目录。当使用jest设置文件时,错误消息中唯一的变化是消息指向jest安装文件,而不是welcome.tsx.
- 测试的页面是";欢迎。tsx"导入AsyncStorage
- 该测试什么都没有,只有一个控制台日志(下面的代码(,并且不使用AsyncStorage
测试代码
const {getAllByTestId} = renderer.create(<Welcome />);
console.log(getAllByTestId);
欢迎.tsx
...
<Image source=... testID="WelcomeImage" />
...
软件包.json
...
"scripts": { ... "test": "jest" ...},
"jest:" {
"preset": "jest-expo",
"globals": { "DEV": true
}
...
已安装版本
- 反应:17.0.1
- 本地反应:0.64.3
- React原生测试库:6.0.0
- React测试渲染器:17
- 耶稣:27.4.5
按照-https://react-native-async-storage.github.io/async-storage/docs/advanced/jest/以下是我所做的:
- 如上所述设置jestSetupFile.js
- 设置模拟/@react本机异步存储目录(我知道上面提到要用两个中的任何一个,但我都用了(
- 清除了npm缓存,删除了节点模块文件夹,删除了package-lock.json,并再次执行npm i。(干净起步的常用步骤(
现在可以工作了。虽然我对酶有错误,但这不在这个问题的范围内。