我正在尝试使用ReactTestUtils为反应原生项目设置单元测试 但是我在运行npm test时遇到了这个错误:
Cannot find module 'react/lib/React' from 'ReactTestUtils.js'
我感觉我的依赖关系不正常,但我找不到原因。我已经尝试降级反应版本,但这不会解决我的问题并调整react-dom版本,但我似乎无法找到黄金组合。
任何人都知道这是否是一个已知问题?我无法在这里找到任何关于此的文档,也没有在反应文档中找到。
这是我的package.json配置:
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
"android": "react-native-scripts android",
"ios": "react-native-scripts ios",
"test": "jest --watch"
},
"dependencies": {
"react-native-scripts": "0.0.40",
"expo": "18.0.3",
"react": "16.0.0-alpha.12",
"react-native": "0.45.1",
"react-navigation": "1.0.0-beta.11"
},
"devDependencies": {
"enzyme": "^2.9.1",
"jest": "19.0.2",
"jest-expo": "~18.0.0",
"react-addons-test-utils": "^15.6.0",
"react-dom": "^15.6.1",
"react-test-renderer": "^16.0.0-alpha.12"
},
"jest": {
"preset": "react-native",
"collectCoverage": true,
"coverageDirectory": "__coverage__",
"testRegex": "./__tests__/[^setup].*.js$",
"transformIgnorePatterns": [
"node_modules/(?!react-native|native-base|react-navigation|react-native-fabric)"
],
"setupFiles": [
"./__tests__/setup.js"
]
}
答案 0 :(得分:0)
你混淆了React(网络)和React-Native。
ReactTestUtils是为React制作的,不适用于React-Native。因此,您需要在其他地方寻找React-Native的单元测试。 您还应该从项目中删除React作为依赖项。
答案 1 :(得分:0)
我在这里看到的问题是你在同时依赖于反应16和15。 react / lib / *中的内部结构在反应16中完全改变,因此不可能进行比较。 你应该用一切来反应( - *)16或15但不要两者兼而有之。
最新的Jest和酶(v3)现在已经完全反应16刚刚出来!