反应原生 jest.preset.js 文件丢失错误

Posted

技术标签:

【中文标题】反应原生 jest.preset.js 文件丢失错误【英文标题】:React native jest.preset.js file missing error 【发布时间】:2021-02-27 02:29:06 【问题描述】:

我使用 @testing-library/react-native 来测试我的 RN 应用程序。当我运行纱线测试时,出现以下错误。

@testing-library/react-native should have "jest-preset.js" or "jest-preset.json" file at the root.

我在我的应用程序中使用打字稿。

我的测试脚本是这样的。

test": "jest --config jest.config.json"

jest.config.json 文件是这样的。


  "preset": "@testing-library/react-native",
  "collectCoverageFrom": ["src/**/*.ts,tsx"],
  "moduleDirectories": ["node_modules", "src"],
  "setupFiles": [
    "<rootDir>/jestSetup/setup.js",
    "./node_modules/react-native-gesture-handler/jestSetup.js"
  ],
  "transformIgnorePatterns": [
    "node_modules/(?!(jest-)?(react-native|@?react-navigation|@react-native-community))"
  ],
  "coveragePathIgnorePatterns": ["/node_modules/", "/jestSetup", "/src/config.ts", "/src/app.tsx"]

为什么会出现这个错误?

【问题讨论】:

【参考方案1】:

预设不再存在于 >=7.0.0 "@testing-library/react-native" 中。根据文档,似乎应该使用“react-native”作为预设。

  "preset": "react-native",

V7 upgrade documentation reference

【讨论】:

【参考方案2】:

我正在使用 expo,从 38 更新到 39 后,Jest 停止工作。我也有同样的问题——它抱怨缺少预设的 js 文件。

下面的预设对我来说不起作用

"preset": "@testing-library/react-native",

所以我像这样更改了 jest.config.js:

module.exports = 
clearMocks: true,
coverageDirectory: 'coverage',
testEnvironment: 'node',
preset: './node_modules/jest-expo/jest-preset.js',

将预设文件位置更改为我正在使用的 expo 文件位置,它完成了工作

【讨论】:

如果我想使用 jest-expo/universal 预设,这将如何工作?

以上是关于反应原生 jest.preset.js 文件丢失错误的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 pod install 错误 glog 太旧或缺少在 Windows 10 中反应原生 ios

通过变量动态导入文件 - 反应原生

反应原生 - 获取构建工具文件时出错

反应原生 fs 库不写文件

如何在另一个文件中使用该变量? (反应原生)

导入反应原生组件的问题