Expo Jest即使使用mock dirctory或Jest设置文件也找不到AsyncStorage



我正试图在用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/以下是我所做的:

  1. 如上所述设置jestSetupFile.js
  2. 设置模拟/@react本机异步存储目录(我知道上面提到要用两个中的任何一个,但我都用了(
  3. 清除了npm缓存,删除了节点模块文件夹,删除了package-lock.json,并再次执行npm i。(干净起步的常用步骤(

现在可以工作了。虽然我对酶有错误,但这不在这个问题的范围内。

最新更新