когда я тестирую app.js, у меня появляется проблема - PullRequest
0 голосов
/ 27 февраля 2019

когда я тестирую App.js У меня появляется следующая ошибка:

TypeError: Cannot read property 'createStackNavigator' of undefined

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

файл, который указывает, это HomeNavigation.js.С другой стороны, строка, которая указывает, является правильной, и в этом файле правильный код

, вот мой тест

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: Невозможно прочитать свойство 'State' из неопределенного

  • jest.mock('react-navigation-stack', () => { BaseButton: {} });, эта строка решает эту проблему: TypeError: Невозможно прочитать свойство 'BaseButton' из неопределенного

HomeNavigation.js

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

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

1 Ответ

0 голосов
/ 27 февраля 2019

Я думаю, что defaultNavigationOption не является жирной стрелкой.Из документов реактивной навигации:

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'
      }
    }
  }
);
...