Как я могу проверить, отображался ли дочерний компонент React на основе изменения URL с помощью Jest и Enzyme? - PullRequest
0 голосов
/ 21 марта 2019

Я хочу проверить, отображается ли компонент NotFoundScreen при изменении URL-адреса на несуществующий путь

Это мой компонент приложения:

import React, { Component } from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import './App.css';
import HomeScreen from '../HomeScreen';
import NotFoundScreen from '../NotFoundScreen';

export default class App extends Component {
  render() {
    return (
      <BrowserRouter>
        <Switch>
          <Route path="/" exact component={HomeScreen} />
          <Route component={NotFoundScreen} />
        </Switch>
      </BrowserRouter>
    );
  }
}

ИВот мой неработающий тест:

  it('render NotFoundScreen when goes to a wrong path', async () => {
    const wrapper = mount(<App />);

    window.location.href = 'http://localhost:3000/wrongpath';
    await wrapper.update();

    expect(wrapper.find(NotFoundScreen).length).toEqual(1);
  });

Когда я переключаюсь на проверку компонента HomeScreen, который он проходит, он как wrapper не обновляется в соответствии с URL

expect(wrapper.find(HomeScreen).length).toEqual(1);

1 Ответ

0 голосов
/ 21 марта 2019

Кажется, проблема в jsdom.

Вот обходной путь:

  it('render NotFoundScreen when goes to a wrong path', async () => {
    history.replaceState({}, 'WrongPath', '/wrongpath');
    const wrapper = mount(<App />);
    expect(wrapper.find(NotFoundScreen).length).toEqual(1);
  });
...