Javascript Jest测试未使用react导航正常运行
我正在使用react native 0.59,我想为我的应用程序编写第一个测试。因此,在读取react文档时,我只需要运行以下命令Javascript Jest测试未使用react导航正常运行,javascript,reactjs,react-native,jestjs,react-navigation,Javascript,Reactjs,React Native,Jestjs,React Navigation,我正在使用react native 0.59,我想为我的应用程序编写第一个测试。因此,在读取react文档时,我只需要运行以下命令yart test,该命令执行以下文件: import 'react-native'; import React from 'react'; import App from '../App'; // Note: test renderer must be required after react-native. import renderer from 'react
yart test
,该命令执行以下文件:
import 'react-native';
import React from 'react';
import App from '../App';
// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';
it('renders correctly', () => {
renderer.create(<App />);
});
这是我的app navigator.js
文件的一部分:
const PetStack = createStackNavigator({
UpdatePet: { screen: UpdatePet },
}, {
mode: 'card',
defaultNavigationOptions: {
headerStyle: { backgroundColor: 'transparent' }
}
});
const MainStack = createBottomTabNavigator({
Home: { screen: Home },
Pets: { screen: Pets },
Notifications: { screen: UserNotifications },
UpdateUser: { screen: UpdateUser },
});
这些是失败的路线。这很奇怪,因为当我console.log
createStackNavigator时,它会记录一个模拟函数,但当我使用createBottomTabNavigator
时,它会记录未定义的
这是我的jest配置:
"jest": {
"preset": "react-native",
"verbose": true,
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
},
"globals": {
"NODE_ENV": "test"
},
"moduleFileExtensions": [
"js"
],
"moduleDirectories": [
"src",
"node_modules"
],
"transformIgnorePatterns": [
"/node_modules/(?!native-base|react-native-localize|react-navigation|react-navigation-redux-helpers)/"
],
"setupFiles": [
"./jest-setup.js"
]
}
“开玩笑”:{
“预设”:“反应本机”,
“详细”:正确,
“转变”:{
“^.+\.js$”:“/node\u modules/react native/jest/preprocessor.js”
},
“全球”:{
“节点环境”:“测试”
},
“moduleFileExtensions”:[
“js”
],
“模块目录”:[
“src”,
“节点_模块”
],
“transformIgnorePatterns”:[
“/node_modules/(?!native base | react native localize | react navigation | react navigation redux helpers)/”
],
“设置文件”:[
“/jest setup.js”
]
}
我阅读了一些相关问题,刚刚发现。他们建议在node\u modules/react native/jest/preprocessor.js
中将键inlineRequires
设置为false
,但这对我不起作用在项目的根目录下创建一个文件jest.config.js
// jest.config.js
const {defaults} = require('jest-config');
module.exports = {
moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'],
};
有关更多详细信息,请参见我也有同样的问题,无法找到解决方法。如果你找到了解决方案,请更新你的帖子。我还没有找到任何更新,但阅读后似乎没有办法,你需要模拟整个导航过程@YanivShnaider@GermanAlzate我也面临同样的问题。有解决办法吗?
// jest.config.js
const {defaults} = require('jest-config');
module.exports = {
moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts', 'tsx'],
};