У меня есть тест, в котором мне нужно смоделировать 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;
});
});