В моем проекте React Native я использую StackNavigator для маршрутизации.
Я создаю один такой:
const Navigator = StackNavigator(routeConfig, stackConfig);
И используя его в моем приложении, вот так:
export default class App extends React.Component {
//some other code
render() {
return (
<Provider store={this.props.store}>
<View >
<Navigator />
</View>
</Provider>
);
}
}
Теперь я добавил новый экран в свое приложение в routeConfig
и хочу убедиться, что он вызывается.
В моем тесте у меня есть что-то вроде этого:
const fakeMyRouteCreator = jest.fn();
jest.spyOn(myRouteCreator, 'default').mockImplementation((_) => fakeMyRouteCreator);
const wrapper = mount(
<App store={store} />,
{testEnvironment: jsdom}
);
//How do I trigger the navigation?!?!
expect(fakeMyRouteCreator).toHaveBeenCalledTimes(2);
По сути, я просто хочу, чтобы StackNavigator перемещался.
Из компонента React вы можете сделать что-то вроде этого:
this.props.navigation.navigate("NestedNavigator")
Однако из теста это невозможно, так как я не могу получить доступ к props
. Так как еще я могу это сделать?
Примечание: я попытался упростить код перед публикацией, потому что маршрут содержит 2-3 компонента более высокого порядка, делая макет более сложным. Однако это не имеет значения, поскольку я просто хочу знать, как вызвать навигатор.