Unit testing TypeError:_reactNativeLanguages.default.addEventListener不是一个简单的函数
我已经完成了我的第一个react本机应用程序。现在,我想使用jest进行单元测试并获得整个应用程序的代码覆盖率。我使用过npm包,如, splash test.js:Unit testing TypeError:_reactNativeLanguages.default.addEventListener不是一个简单的函数,unit-testing,react-native,jestjs,Unit Testing,React Native,Jestjs,我已经完成了我的第一个react本机应用程序。现在,我想使用jest进行单元测试并获得整个应用程序的代码覆盖率。我使用过npm包,如, splash test.js: import React from 'react'; import Splash from '../Src/components/authentication/Splash'; import renderer from 'react-test-renderer'; test('renders correctly',()=&g
import React from 'react';
import Splash from '../Src/components/authentication/Splash';
import renderer from 'react-test-renderer';
test('renders correctly',()=>{
const tree = renderer.create(
<Splash />
).toJSON();
expect(tree).toMatchSnapshot();
})
jest.mock('react-native-languages', () => ({
RNLanguages: {
language: 'en',
languages: ['en'],
},
}));
{
"name": "app-name",
"version": "1.0.4",
"private": true,
"rnpm": {
"assets": [
"Src/assets/fonts/"
]
},
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest --coverage --coverageDirectory=output/coverage/jest"
},
"dependencies": {
"i18n-js": "^3.1.0",
"react": "16.6.3",
"react-native": "0.57.8",
"react-native-fast-image-zoom-viewer": "^2.3.0",
"react-native-firebase": "^5.1.1",
"react-native-gifted-chat": "^0.7.2",
"react-native-image-crop-picker": "^0.21.3",
"react-native-image-zoom-viewer": "^2.2.25",
"react-native-languages": "^3.0.1",
"react-native-material-dropdown": "^0.11.1",
"react-native-modal": "^7.0.2",
"react-native-permissions": "^1.1.1",
"react-native-progress": "^3.5.0",
"react-native-restart": "0.0.9",
"react-native-spinkit": "^1.1.1",
"react-native-swiper": "^1.5.14",
"react-native-view-toast": "0.0.1",
"react-navigation": "^3.0.8",
"react-redux": "^6.0.0",
"realm": "^2.22.0",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0",
"rn-fetch-blob": "^0.10.15",
"tipsi-stripe": "^7.1.0"
},
"devDependencies": {
"babel-jest": "^23.6.0",
"jest": "^23.6.0",
"jest-junit": "^6.2.1",
"metro-react-native-babel-preset": "^0.51.0",
"react-test-renderer": "^16.6.3"
},
"jest": {
"preset": "react-native",
"transform": {
"^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
},
"setupFiles": [
"./test/env.js"
],
"coverageReporters": [
"text"
],
"reporters": [
"default",
"jest-junit"
],
"collectCoverageFrom": [
"Src/**/*.{js,jsx}",
"!/node_modules/"
],
"transformIgnorePatterns": [
"node_modules/(?!(react-native|react-native-languages)/)"
]
},
"jest-junit": {
"output": "output/coverage/junit/junit.xml",
"usePathForSuiteName": "true"
}
}
package.json:
import React from 'react';
import Splash from '../Src/components/authentication/Splash';
import renderer from 'react-test-renderer';
test('renders correctly',()=>{
const tree = renderer.create(
<Splash />
).toJSON();
expect(tree).toMatchSnapshot();
})
jest.mock('react-native-languages', () => ({
RNLanguages: {
language: 'en',
languages: ['en'],
},
}));
{
"name": "app-name",
"version": "1.0.4",
"private": true,
"rnpm": {
"assets": [
"Src/assets/fonts/"
]
},
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest --coverage --coverageDirectory=output/coverage/jest"
},
"dependencies": {
"i18n-js": "^3.1.0",
"react": "16.6.3",
"react-native": "0.57.8",
"react-native-fast-image-zoom-viewer": "^2.3.0",
"react-native-firebase": "^5.1.1",
"react-native-gifted-chat": "^0.7.2",
"react-native-image-crop-picker": "^0.21.3",
"react-native-image-zoom-viewer": "^2.2.25",
"react-native-languages": "^3.0.1",
"react-native-material-dropdown": "^0.11.1",
"react-native-modal": "^7.0.2",
"react-native-permissions": "^1.1.1",
"react-native-progress": "^3.5.0",
"react-native-restart": "0.0.9",
"react-native-spinkit": "^1.1.1",
"react-native-swiper": "^1.5.14",
"react-native-view-toast": "0.0.1",
"react-navigation": "^3.0.8",
"react-redux": "^6.0.0",
"realm": "^2.22.0",
"redux": "^4.0.1",
"redux-thunk": "^2.3.0",
"rn-fetch-blob": "^0.10.15",
"tipsi-stripe": "^7.1.0"
},
"devDependencies": {
"babel-jest": "^23.6.0",
"jest": "^23.6.0",
"jest-junit": "^6.2.1",
"metro-react-native-babel-preset": "^0.51.0",
"react-test-renderer": "^16.6.3"
},
"jest": {
"preset": "react-native",
"transform": {
"^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
},
"setupFiles": [
"./test/env.js"
],
"coverageReporters": [
"text"
],
"reporters": [
"default",
"jest-junit"
],
"collectCoverageFrom": [
"Src/**/*.{js,jsx}",
"!/node_modules/"
],
"transformIgnorePatterns": [
"node_modules/(?!(react-native|react-native-languages)/)"
]
},
"jest-junit": {
"output": "output/coverage/junit/junit.xml",
"usePathForSuiteName": "true"
}
}
{
“名称”:“应用程序名称”,
“版本”:“1.0.4”,
“私人”:没错,
“rnpm”:{
“资产”:[
“Src/assets/fonts/”
]
},
“脚本”:{
“开始”:“node node_modules/react native/local cli/cli.js start”,
“测试”:“jest--coverage--coverage Directory=output/coverage/jest”
},
“依赖项”:{
“i18n js”:“^3.1.0”,
“反应”:“16.6.3”,
“反应本机”:“0.57.8”,
“react本机快速图像缩放查看器”:“^2.3.0”,
“react native firebase”:“^5.1.1”,
“react native gifted chat”:“^0.7.2”,
“react本机映像裁剪选择器”:“^0.21.3”,
“react本机图像缩放查看器”:“^2.2.25”,
“反应母语”:“^3.0.1”,
“反应原材料下拉列表”:“^0.11.1”,
“反应本机模式”:“^7.0.2”,
“反应本机权限”:“^1.1.1”,
“反应本机进度”:“^3.5.0”,
“反应本机重启”:“0.0.9”,
“react native spinkit”:“^1.1.1”,
“react native swiper”:“^1.5.14”,
“react native view toast”:“0.0.1”,
“反应导航”:“^3.0.8”,
“react redux”:“^6.0.0”,
“领域”:“^2.22.0”,
“redux”:“^4.0.1”,
“redux thunk”:“^2.3.0”,
“rn fetch blob”:“^0.10.15”,
“tipsi条纹”:“^7.1.0”
},
“依赖性”:{
“巴别塔笑话”:“^23.6.0”,
“玩笑”:“^23.6.0”,
“jest junit”:“^6.2.1”,
“metro react native babel预设”:“^0.51.0”,
“反应测试渲染器”:“^16.6.3”
},
“笑话”:{
“预设”:“反应本机”,
“转变”:{
“^.+\.(js)$”:“/node\u modules/react native/jest/preprocessor.js”
},
“设置文件”:[
“/test/env.js”
],
“搬运工”:[
“文本”
],
“记者”:[
“默认”,
“开玩笑的少年”
],
“CollectionCoverage from”:[
“Src/***.{js,jsx}”,
“!/node\u模块/”
],
“transformIgnorePatterns”:[
“节点_模块/(?!(反应本机|反应本机语言)/)”
]
},
“开玩笑的少年”:{
“output”:“output/coverage/junit/junit.xml”,
“usePathForSuiteName”:“true”
}
}
现在,如果我进行npm测试,它会抛出一个错误,正如我在标题中提到的那样。有人告诉我如何绕过我在应用程序中使用的所有npm模块
提前谢谢 我也犯了同样的错误:(