我正在开发的反应本机应用程序中运行单元测试,其中三个失败并显示以下消息:
TypeError: Cannot read property 'ReactCurrentOwner' of undefined
该错误似乎不是由我的代码引起的,而是由react-test-renderer
(在两个测试中)和enzyme-adapter-react-16
(在一个测试中)引起的。
这是一个博览会应用程序,单元测试正在运行。然后我弹出了。我替换了
"jest": {
"preset": "jest-expo"
},
跟
"jest": {
"preset": "react-native"
},
我的所有其他测试都在运行。三个失败的测试是唯一使用 react-test-renderer
和 enzyme-adapter-react-16
.
我已经尝试(多次)删除node_modules
并重新安装。以下是我正在使用的版本:
"devDependencies": {
"babel-preset-react-native-stage-0": "^1.0.1",
"deep-freeze": "^0.0.1",
"enzyme": "^3.1.1",
"enzyme-adapter-react-16": "^1.0.4",
"eslint": "^4.9.0",
"jest": "^21.2.1",
"react-dom": "^16.0.0",
"react-test-renderer": "^16.0.0"
},
"scripts": {
"start": "react-native start",
"android": "react-native run-android",
"ios": "react-native run-ios",
"test": "jest"
},
"jest": {
"preset": "react-native"
},
"dependencies": {
"assert": "^1.4.1",
"react": "16.0.0",
"react-native": "^0.50.1",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"yarn": "^1.3.2"
}*
我也遇到了这个问题,并通过安装相同版本的 react、react-dom 和 react-test-renderer 来修复它。
一些背景:
- 我有一个项目,其中提到的包是 16.2.0(它们是
最初使用该版本安装),一切正常。 - 在另一个项目中,我有反应和反应dom 15.4.2并更新它们通过删除node_modules
更改版本到 16.2.0package.json 并从头开始安装所有依赖项并没有
帮助。我不得不将反应测试渲染器回滚回 15.4.2 并且只有
然后我设法解决了这个问题。我不知道是否
这是与项目或环境相关的问题,但我从未安装在全球范围内做出反应或反应。
因此,请尝试使 react-test-renderer 与你的 react 和 react-dom 版本相同。
为了其他有相同问题的人的利益:当我清理我的全局node_modules
并将react
、react-native
和其他一些东西只留在项目的node_modules
时,它得到了修复。
您需要更新react
,react-dom
和react-test-renderer
以16.3.2
。
似乎其中一个是 16 alpha,尚未得到官方支持。
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-test-renderer": "^16.3.2"
更多详情如下:
https://github.com/facebook/create-react-app/issues/2526#issuecomment-308081573