Как смоделировать щелчки в модульных тестах для маршрутов / ссылок реакции-маршрутизатора - PullRequest
0 голосов
/ 05 марта 2020

Все, что я хочу сделать, это проверить, что маршрут меняется с /A на /B при нажатии на Link. Кажется, это довольно легко проверить, но я попробовал все, и ничего не работает. Вот тест, который продолжает терпеть неудачу:

it('should change the location to /B', () => {

    // set the starting path to /A
    let history = createBrowserHistory();
    history.push('/A');

    // render the Router with the starting path /A
    // and define the routes and Link 
    let wrapper = mount(
        <Router history={history}>
            <Switch>
                <Route path="/A" component={() => <Placeholder message="A" />} />
                <Route path="/B" component={() => <Placeholder message="B" />} />
                <Route path="/" component={() => <Placeholder message="Home" />} />
            </Switch>
            <Link to="/B" />
        </Router>,
    );

    // double check we are currently in /A
    expect(wrapper.find(Placeholder).prop('message')).toBe('A'); // SUCCEEDS

    // click the Link that should take us to /B
    wrapper.find(Link).simulate('click', { button: 0 }); // despite clicking the link, it doesn't actually work?

    // expect us to now be at /B
    expect(wrapper.find(Placeholder).prop('message')).toBe('B'); // FAILS
});

В случае, если вы хотите увидеть компонент Placeholder (но это супер базовый c):

class Placeholder extends React.Component<any, any> {
    render() {
        return (
            <div className="text-center m-auto">
                <small className="text-center">{this.props.message}</small>
            </div>
        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...