подтвердить навигацию. navigate идет на определенный c URL с тестированием - PullRequest
0 голосов
/ 28 апреля 2020

Исходя из Angular, у меня возникают трудности с выполнением простых модульных тестов в React Native, что довольно просто в Angular.

Мой компонент - это компонент автозагрузчика, который загружается первым при запуске приложения и затем перенаправляет на ScreenOne или ScreenTwo в зависимости от условия. Тест, который я хочу сделать сейчас, заключается в том, что он перенаправляет на правый экран на основе ввода.

import React from 'react';
import {StatusBar, View} from 'react-native';

import {userInformation} from '../lib/userInformation';

import Spinner from '../components/Spinner/Spinner';

const AuthLoadingScreen: () => React$Node = (props) => {

  const startApp = async () => {
    const userInfo = await userInformation();

    let goToLogin = true;
    if (userInfo != null) {
      goToLogin = false;
    }

    props.navigation.navigate(!goToLogin ? 'App' : 'Auth');
  };

  startApp().then().catch()


  return (
    <View>
      <Spinner />
      <StatusBar barStyle="default" />
    </View>
  );
};

export default AuthLoadingScreen;

Пока он работает правильно на моем устройстве, тесты не работают:

import 'react-native';
import React from 'react';
import AuthLoadingScreen from './AuthLoadingScreen';
import {userInformation} from '../lib/userInformation';



// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';

const createTestProps = (props) => ({
    navigation: {
      navigate: jest.fn()
    },
    ...props
  });


describe('Component: AuthLoadingScreen', () => {


  it('renders correctly', () => {
    renderer.create(<AuthLoadingScreen />);
  });

  it('redirects to login page', () => {

     var props = createTestProps({});
     jest.mock('../lib/userInformation', () => ({
        userInformation: jest.fn().mockImplementation(() => null)
    }))

    expect(props.navigation.navigate).toHaveBeenCalledWith('login');


  });


});

как мне go провести такой тест?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...