Исходя из 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 провести такой тест?