【问题标题】:How to write unit test cases for navigation stack in react native using enzyme jest?如何使用酶玩笑在本机反应中编写导航堆栈的单元测试用例?
【发布时间】:2020-06-15 11:17:04
【问题描述】:

我是反应原生并尝试编写单元测试用例的新手。我能够编写快照测试用例,但不确定如何为导航堆栈编写单元测试用例。

有没有办法为导航编写单元测试用例?

navigator.js

import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import HomeScreen from '../component/HomeComponent/home';
import ThumbnailView from '../component/ThumbnailComponent/thumbnailView';
import AlbumDetailsView from '../component/AlbumDetailsComponent/albumDetailsView';


const MainNavigator = createStackNavigator({
  HomeScreen: { screen: HomeScreen },
  ThumbnailViewScreen: { screen: ThumbnailView },
  AlbumDetailsViewScreen: { screen: AlbumDetailsView },
},
{
  defaultNavigationOptions: {
    headerTintColor: '#fff',
    headerStyle: {
      backgroundColor: '#0c82f3',
    },
    headerTitleStyle: {
      fontWeight: 'bold',
    },
  },
});

const NavigationApp = createAppContainer(MainNavigator);
export default NavigationApp;

【问题讨论】:

    标签: react-native unit-testing jestjs enzyme


    【解决方案1】:

    您可以像这样在组件中测试navigate 函数:

    import HomeScreen from '../component/HomeComponent/home';
    import { shallow, ShallowWrapper } from "enzyme";
    import React from "react";
    import { View } from "react-native";
    
    const createTestProps = (props) => ({
      navigation: {
        navigate: jest.fn()
      },
      ...props
    });
    
    describe("HomeScreen", () => {
      describe("rendering", () => {
        let wrapper;
        let props;
        beforeEach(() => {
          props = createTestProps({});
          wrapper = shallow(<HomeScreen {...props} />);
        });
    
        it("should render a <View /> and go to ThumbnailViewScreen", () => {
          expect(wrapper.find(View)).toHaveLength(1);   // Some other tests
          expect(props.navigation.navigate).toHaveBeenCalledWith('ThumbnailViewScreen');  // What you want
        });
      });
    });
    

    HomeScreen.js:

    import React, { Component } from "react";
    import { Text, View } from "react-native";
    
    export class HomeScreen extends Component {
      componentDidMount = () => {
        this.props.navigation.navigate("ThumbnailViewScreen");
      };
    
      render() {
        return (
          <View>
            <Text>This is the HomeScreen.</Text>
          </View>
        );
      }
    }
    
    export default HomeScreen;
    

    您可以找到更多详情here

    【讨论】:

      猜你喜欢
      • 2022-07-04
      • 2019-08-08
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2021-08-27
      • 1970-01-01
      相关资源
      最近更新 更多