我正在开发一个我正在开发的反应原生应用程序中的单元测试,其中三个失败了这条消息:
TypeError: Cannot read property 'ReactCurrentOwner' of undefined
错误似乎不是由我的代码引起的,而是由react-test-renderer
(在两个测试中)和enzyme-adapter-react-16
(在一个测试中)引起的。
这是一个expo应用程序,单元测试正在运行。然后我开枪了。我换了
"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"
}*
答案 0 :(得分:5)
我也有这个问题,并通过安装相同版本的react,react-dom和react-test-renderer修复了它。
一些背景知识:
因此,请尝试使react-test-renderer与您的反应和反应版本相同。
答案 1 :(得分:2)
好像您需要将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
答案 2 :(得分:1)
为了其他有相同问题的人的利益:当我清理全局node_modules
并离开react
,react-native
以及仅在项目中的其他一些内容时,它已得到修复node_modules
。