首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >测试app.js时,出现了一个问题

测试app.js时,出现了一个问题
EN

Stack Overflow用户
提问于 2019-02-28 00:53:53
回答 1查看 765关注 0票数 0

当我测试App.js时,出现以下错误:

代码语言:javascript
复制
TypeError: Cannot read property 'createStackNavigator' of undefined

      24 |             borderBottomWidth:0,
      25 |         },
    > 26 |         headerTintColor: '#294c95',
         |                                                  ^
      27 |         headerTitleStyle: {
      28 |             fontWeight: 'bold',
      29 |             color:'white',

指示它的文件是HomeNavigation.js。另一方面,指示的行是正确的,并且在这个文件中代码是正确的

这是我的测试

代码语言:javascript
复制
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';

global.fetch = jest.fn(() => new Promise(resolve => resolve()));
jest.mock('react-native-gesture-handler', () => {});
jest.mock('react-navigation-stack', () => { BaseButton: {} });
//jest.mock('react-navigation', ()=>{}); //if I add or remove this line it doesn't change anything.

describe('App', ()=> {
  it('renders correctly the App component', () => {
    const tree = renderer.create(<App/>).toJSON();
    expect(tree).toMatchSnapshot();
  });
});

  • jest.mock('react-native-gesture-handler', () => {})此行解决了此问题: TypeError:无法读取undefined
  • jest.mock('react-navigation-stack', () => { BaseButton: {} });的属性“
    • jest.mock('react-native-gesture-handler', () => {})”此行解决了此问题: TypeError:无法读取未定义的

    的属性“BaseButton”

HomeNavigation.js

代码语言:javascript
复制
import React from "react";
import {createStackNavigator} from "react-navigation";
import {Screen1Screen} from "../Screen"; //whatever name
import {Icon} from "react-native-elements";
import {fromRight} from 'react-navigation-transitions';
import {CLR_MENU} from "../assets/styles/colors";

export const HomeNavigation = createStackNavigator({
    Screen1: Screen1Screen // whatever name // this part is correct
},{
    cardStyle: {
        backgroundColor: 'black',
        opacity: 1,
    },
    defaultNavigationOptions: (navigation) =>({
        headerStyle: {
            backgroundColor: [CLR_MENU],
            borderBottomWidth:0,
        },
        headerTintColor: '#294c95', // the error point on this line
        headerTitleStyle: {
            fontWeight: 'bold',
            color:'white',
        },
        headerRight:
            <Icon
                name = "menu"
                size = {24}
                color = "white"
                onPress={_=>navigation.navigation.openDrawer()}
                containerStyle={{marginRight:10}}
                underlayColor={CLR_MENU}
            />,
    }),
    transitionConfig: () => fromRight(),
});

package.json

代码语言:javascript
复制
...
"jest": {
    "preset": "react-native",
    "setupFiles": [
      "<rootDir>/src/setupJest.js"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-navigation|react-navigation-redux-helpers|react-navigation-drawer)"
    ]
  }
EN

回答 1

Stack Overflow用户

发布于 2019-02-28 01:18:30

我认为defaultNavigationOption不是一个大箭头函数。从react导航的文档中:

代码语言:javascript
复制
const RootStack = createStackNavigator(
  {
    Home: HomeScreen,
    Details: DetailsScreen
  },
  {
    initialRouteName: 'Home',
    /* The header config from HomeScreen is now here */
    defaultNavigationOptions: {
      headerStyle: {
        backgroundColor: '#f4511e'
      },
      headerTintColor: '#fff',
      headerTitleStyle: {
        fontWeight: 'bold'
      }
    }
  }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54910635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档