Тестирование навигации между экранами - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь проверить простую навигацию между двумя экранами. У меня есть LandingScreen:

class LandingScreen extends Component { 

constructor(props){
    super(props);
}

handleNavigation = () => {
    this.props.navigation.navigate('AgeScreen');
}

render() {
    return (
            <View>
            //extra UI components
                <TouchableOpacity onPress={this.handleNavigation}>
                    <View style={styles.buttonWrapper}>
                                //extra UI components
                    </View>
                </TouchableOpacity>
            </View>
    )
}

}

export default LandingScreen;

Когда нажата handleNavigation, я ожидаю, что отобразится AgeScreen. Я проверил это вручную, и это работает; тем не менее, я также хочу добавить к нему модульный тест.

Это модульный тест, который я написал до сих пор:

describe('Testing navigation', () => {
it('Navigates as expected', () => {
    let handleNavigationMock = jest.fn()
    const navigation = { navigate: jest.fn() };
    let landingScreen = renderer.create(
        <LandingScreen 
            handleNavigation={navigation}
            navigation={navigation}
        />
    ).getInstance()

    landingScreen.handleNavigation();
    expect(handleNavigationMock).toBeCalled();    

    });
});

Моя проблема заключается в том, что тест завершается неудачно с сообщение:

Expected number of calls: >= 1

Received number of calls: 0

Мои вопросы:

  1. Это правильный способ проверки навигации между экранами?
  2. Если # 1 верно, как я могу исправить модульный тест?

Любая помощь будет высоко оценена!

...