Фермент находит компоненты выборочно - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь проверить свой маршрут компонента 404 в Ферменте, но не могу пройти тест по какой-то странной причине.

Компонент 404 выглядит следующим образом:

const PageNotFound = () => {
  return <h1>404: Page Not Found!</h1>;
};

export default PageNotFound;

Все маршруты объявлены внутри App, а именно:

const App = () => {
  return (
    <Provider store={store}>
      <ThemeProvider theme={theme}>
        <CssBaseline />
        <AppRouter />
      </ThemeProvider>
    </Provider>
  );
};

, где я отображаю PageNotFound для всех необъявленных маршрутов.

, когда я пытаюсь проверить, работает ли эта настройка:

import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { shallow, mount } from 'enzyme';
import App from '../App';
import PageNotFound from '../pages/PageNotFound';

test('404 redirection when the path does not exist', () => {
  const wrapper = mount(
    <MemoryRouter initialEntries={['/doesnotexist']}>
      <App />
    </MemoryRouter>
  );

  //fails
  expect(wrapper.find(PageNotFound).length).toEqual(1);

});

по какой-то причине тест не пройден.

Если я добавлю какой-нибудь случайный компонент в компонент 404 и попытаюсь получить фермент для find его в тесте, он будет работать:

const PageNotFound = () => {
  return <div> <OtherRandomComponent/> <h1>404: Page Not Found!</h1></div>;
};
test('404 redirection when the path does not exist', () => {
  const wrapper = mount(
    <MemoryRouter initialEntries={['/doesnotexist']}>
      <App />
    </MemoryRouter>
  );

  // works. trying to find "PageNotFound" still does not work.
  expect(wrapper.find(OtherRandomComponent).length).toEqual(1);

});

Может кто-нибудь помочь мне понять почему?

...