Javascript 无法从';react native implementation.js';
我有以下笑话测试:Javascript 无法从';react native implementation.js';,javascript,react-native,gulp,jestjs,Javascript,React Native,Gulp,Jestjs,我有以下笑话测试: import React from 'react'; import IndexSign from '../IndexSign'; import renderer from 'react-test-renderer'; it('renders correctly', () => { const tree = renderer.create( <IndexSign index={1}/> ).toJSON(); expect(tree).t
import React from 'react';
import IndexSign from '../IndexSign';
import renderer from 'react-test-renderer';
it('renders correctly', () => {
const tree = renderer.create(
<IndexSign index={1}/>
).toJSON();
expect(tree).toMatchSnapshot();
});
对于测试,我使用的是Gulp:
gulp.task('tests', () => {
process.env.NODE_ENV = 'test';
return gulp.src('src').pipe(jest({
}));
});
问题是,当我运行此测试时,我得到:
● Test suite failed to run
Cannot find module 'StyleSheet' from 'react-native-implementation.js'
at Resolver.resolveModule (../node_modules/jest-resolve/build/index.js:142:17)
at Object.StyleSheet (../node_modules/react-native/Libraries/react-native/react-native-implementation.js:98:25)
at Object.<anonymous> (styles/Styles.js:5:13)
● 测试套件无法运行
无法从“react native implementation.js”中找到模块“样式表”
在Resolver.resolveModule(../node_modules/jest resolve/build/index.js:142:17)
在Object.StyleSheet(../node_modules/react native/Libraries/react native/react native implementation.js:98:25)
反对。(styles/styles.js:5:13)
知道为什么会这样吗
为什么它要在react native implementation.js
中搜索样式表
,而不是我导入的react native
为什么它找不到
样式表呢?我遇到了同样的问题。添加
"jest": {
"preset": "react-native"
},
在package.json中
为我修复了错误
如果您保留单独的配置文件,如jest.config.js
。在其中添加预设。签出示例配置文件
module.exports = {
preset: 'react-native',
setupFiles: ['<rootDir>/__test__/setup.js'],
moduleNameMapper: {
'\\.(css|less)$': 'identity-obj-proxy',
'^.+\\.(jpg|jpeg|gif|png|mp4|mkv|avi|webm|swf|wav|mid)$': 'jest-static-stubs/$1'
},
globals: {
__DEV__: true
},
collectCoverageFrom: [
'**/src/**/*.{js,jsx}',
'!**/src/**/style.js',
'!**/src/**/index.js',
'!**/src/theme/**',
'!**/android/**',
'!**/ios/**',
'!**/node_modules/**',
'!**/scripts/**',
'!**/__test__/**'
],
verbose: true,
testPathIgnorePatterns: ['/node_modules/'],
testResultsProcessor: 'jest-sonar-reporter',
testURL: 'http://localhost/'
}
module.exports={
预设:“反应本机”,
setupFiles:['/\\\\\\\\\\\/setup.js'],
模块映射:{
“\\(css | less)$”:“identity obj proxy”,
“^.+\(jpg | jpeg | gif | png | mp4 | mkv | avi | webm | swf | wav | mid)$”:“jest static stubs/$1”
},
全球:{
__德夫:没错
},
收款人:[
“**/src/**.{js,jsx}”,
“!**/src/**/style.js”,
“!**/src/**/index.js”,
“!**/src/theme/**”,
“!**/android/**”,
“!**/ios/**”,
“!**/node_modules/**”,
“!**/scripts/**”,
“!**/\\\\\\\\\/**”
],
没错,
testPathIgnorePatterns:['/node_modules/'],
testResultsProcessor:“开玩笑的声纳记者”,
testURL:'http://localhost/'
}
有两种方法可以解决此问题。
1.确保根文件夹中没有或删除任何名为jest.config.js
的文件。
2.如果您想要自定义jest.config.js
文件,请确保其中有一个预设节点。
像这样:
module.exports = {
preset: "react-native",
verbose: true,
};
我也面临同样的问题。现在问题解决了
My package.json如下所示:
{
"name": "ReactNativeTDDStarterKit",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.8.3",
"react-native": "0.59.5"
},
"devDependencies": {
"@babel/core": "7.4.4",
"@babel/runtime": "7.4.4",
"babel-jest": "24.8.0",
"babel-preset-flow": "^6.23.0",
"babel-preset-react-native": "4.0.0",
"enzyme": "^3.3.0",
"enzyme-adapter-react-16": "^1.1.1",
"enzyme-to-json": "^3.3.1",
"jest": "24.8.0",
"metro-react-native-babel-preset": "0.54.0",
"react-dom": "^16.8.6",
"react-test-renderer": "16.8.3"
},
"jest": {
"preset": "react-native",
"snapshotSerializers": [
"enzyme-to-json/serializer"
],
"setupFiles": [
"<rootDir>/jest/setup.js"
]
}
}
我按照本指南进行操作您找到解决方案了吗?如果项目是用react native init
创建的,那么这是为您完成的项目是用react native init
创建的,并且没有更改相同的错误我在我的包中已经有了这个设置。json
仍然是错误OK我正在处理的项目有单独的jest.config.js
文件。当我提到预设时,它开始工作了。所以,请用您所知道的不同场景更新答案。
{
"name": "ReactNativeTDDStarterKit",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.8.3",
"react-native": "0.59.5"
},
"devDependencies": {
"@babel/core": "7.4.4",
"@babel/runtime": "7.4.4",
"babel-jest": "24.8.0",
"babel-preset-flow": "^6.23.0",
"babel-preset-react-native": "4.0.0",
"enzyme": "^3.3.0",
"enzyme-adapter-react-16": "^1.1.1",
"enzyme-to-json": "^3.3.1",
"jest": "24.8.0",
"metro-react-native-babel-preset": "0.54.0",
"react-dom": "^16.8.6",
"react-test-renderer": "16.8.3"
},
"jest": {
"preset": "react-native",
"snapshotSerializers": [
"enzyme-to-json/serializer"
],
"setupFiles": [
"<rootDir>/jest/setup.js"
]
}
}
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
};