реактивное тестирование librar ie макет - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть тест, в котором мне нужно смоделировать useSelector из реагирующего редукса, теперь, когда я выполняю эту работу, у меня возникает проблема рендеринга, всегда возвращающая неопределенное значение, это происходит после создания макета редукса -> useSelector:

jest.mock('react-redux', () => ({
  useSelector: jest.fn(fn => fn()),
  useDispatch: () => jest.fn(),
}));

при их реализации возникает ошибка:

const wrapper = render

render -> не определено

Недопустимый тип элемента: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получили: undefined. Вероятно, вы забыли экспортировать компонент из файла, в котором он определен, или вы перепутали импорт по умолчанию и имена.

Я получаю эту ошибку в этой строке:

  const wrapper = render(
    <Provider store={store}>
      <BrowserRouter>
        <EventsList></EventsList>
      </BrowserRouter>
    </Provider>
  );

когда я отлаживаю их без строки jest jest.mock('react-redux', ... работает нормально.

, но возникает другая ошибка:

Произошла ошибка при выборе состояния хранилища: невозможно прочитать данные свойства 'of undefined.

В моем компоненте, который я тестирую, я создаю список и получаю этот список хранилищ избыточности с помощью useSelector и useDispatch. это мой тест завершен.

jest.mock('react-redux', () => ({
  useSelector: jest.fn(fn => fn()),
  useDispatch: () => jest.fn(),
}));

afterEach(cleanup);

describe('<EventList />', () => {
  afterEach(() => {
    jest.clearAllMocks();
  });

  afterAll(() => {
    jest.restoreAllMocks();
  });

  const mockStore = configureStore([]);
  const events: Array<IEvent> = [
    {
      title: 'Evento de prueba 1',
      description: '<p>Evento de prueba 1</p>',
      venue: 'Lab 2 Jalasoft La paz',
      date: new Date(),
      booking: false,
      typeEvent: eventType.online,
      state: 'PUBLISHED',
      url: '',
      ownerId: '5e4d74a2a258adb30001962f80',
      id: '5e4e91a3c3145e0ds0016100e6',
    },
    {
      title: 'Evento de prueba 2',
      description: '<p>Evento de prueba 2</p>',
      venue: 'Lab 2 Jalasoft La paz',
      date: new Date(),
      booking: false,
      typeEvent: eventType.online,
      state: 'PUBLISHED',
      url: '',
      ownerId: '5e4d74a2a258b30001962f80',
      id: '5e4e91a3c3145e00016100e6',
    },
  ];

  const store = mockStore((state: any) => {
    return {
      data: events,
      loading: false,
      error: false,
    };
  });

  const wrapper = render(
    <Provider store={store}>
      <BrowserRouter>
        <EventsList></EventsList>
      </BrowserRouter>
    </Provider>
  );

  test('descripv', () => {
    expect(wrapper.getByRole(/form/i)).toBeInTheDocument;
  });
});
...