react-native - 升级到 React-Native 0.58 后,Jest 测试中断

标签 react-native jestjs enzyme react-test-renderer

升级到react-native 0.58.6后,我所有使用react-test-rendererenzyme的测试都中断了

我遇到的错误是例如

  • 类型错误:无法读取未定义的属性“默认”
  • 预期值是真实的,但收到的是未定义
  • 类型错误:无法读取未定义的属性“dive”
  • 类型错误:无法读取未定义的属性“find”

有人经历过类似的行为吗?我尝试了不同版本的 enzyme ,或者开 Jest ,但没有运气。

我的依赖项:

 "dependencies": {
    "firebase": "^5.9.0",
    "prop-types": "^15.6.0",
    "react": "16.6.3",
    "react-native": "0.58.6",
    "react-native-code-push": "^5.5.2",
    "react-native-image-picker": "^0.28.0",
    "react-native-keychain": "^3.0.0",
    "react-native-paper": "^1.12.0",
    "react-native-vector-icons": "^6.4.1",
    "react-navigation": "^1.6.1",
    "react-redux": "^5.0.7",
    "redux": "^3.7.2",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",
    "yarn": "^1.9.4"
  },
  "devDependencies": {
    "babel-eslint": "^8.2.2",
    "babel-jest": "^23.6.0",
    "enzyme": "^3.8.0",
    "enzyme-adapter-react-16": "^1.7.1",
    "eslint": "^4.18.1",
    "eslint-config-airbnb": "^16.1.0",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-jsx-a11y": "^6.0.3",
    "eslint-plugin-react": "^7.12.3",
    "husky": "^0.14.3",
    "jest": "^23.6.0",
    "jest-fetch-mock": "^2.1.0",
    "lint-staged": "^7.2.2",
    "metro-react-native-babel-preset": "^0.53.1",
    "prettier": "1.10.2",
    "react-dom": "^16.7.0",
    "react-test-renderer": "^16.7.0",
    "redux-mock-store": "^1.5.3"
  },
  "jest": {
    "preset": "react-native",
    "setupFiles": ["<rootDir>/tests/setup.js"],
    "collectCoverageFrom": ["app/**/*.js", "!app/components/index.js"],
    "transform": {
      "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
    },
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-navigation)"
    ]
  }

复制者

https://github.com/defrian/TestProject.git

最佳答案

我通过删除解决了这个问题

"transform": {
  "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
},

来自package.json

在这里找到解决方案https://github.com/facebook/react-native/issues/22175#issuecomment-474786382

我还添加/更新了一些开发依赖项:

"babel-core": "^7.0.0-bridge.0",      (new)
"babel-jest": "24.5.0",               (from "^23.6.0")
"enzyme": "^3.9.0",                   (from "^3.8.0")
"enzyme-adapter-react-16": "^1.11.2", (from "^1.7.1")
"jest": "^24.5.0",                    (from "^23.6.0")
"react-test-renderer": "^16.8.4",     (from "^16.7.0")

关于react-native - 升级到 React-Native 0.58 后,Jest 测试中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251467/

相关文章:

javascript - 让堆栈导航器始终呈现initialRoute

java - React-Native:WritableMap 的逻辑比较

javascript - 似乎无法用 Jest 模拟点击事件

node.js - ld : unsupported tapi file type '!tapi-tbd' in YAML file

javascript - 从 React Native 的列表中获取唯一的项目?

reactjs - 使用随机生成的 id (uuid) 进行 Jest 快照测试 React 组件

react-native - 在 React Native 中使用 RTK-Query useLazyQuery 时,Jest 无法正确退出

javascript - 单元测试时如何测试函数的相等性

javascript - 如何使用 Jest/Enzyme 在功能性 React 组件中测试 lambda 函数?

react-redux - Jest + enzyme : test Redux-form