#reactjs #testing #jestjs #react-testing-library
Вопрос:
Я работаю с библиотекой тестирования React, пытаясь протестировать компонент после макетного ответа сервера. После изменения хранилища ответов и в рендеринге должно быть только одно событие в компоненте, но что — то не так, тест завершается ошибкой «Тайм-аут-Асинхронный обратный вызов не был вызван в течение тайм-аута 5000 мс, указанного jest.setTimeout.», скажите, пожалуйста, была ли ошибка?
it("why", async () => {
// 1. mock params for calling getEvent action
const eventIdParam = '2fb037db-d4e8-4960-9f96-0e3d65aa1e36';
initialState = {
...initialState,
user: {
gotOrganizations: true
},
event: {
...initialState.event,
events: [{
id: 'random-id-1' ,
name:'event 1'
},
{
id:'random-id-2',
name:'event 2'
},
{
id:'random-id-3',
name:'event 3'
}],
searchValue: "",
},
};
jest
.spyOn(ReactRouter, "useParams")
.mockReturnValue({ organizationId: 'current', eventIdParam: eventIdParam });
store = mockStore(initialState);
moxios.wait(() => {
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: {"id": eventIdParam,"name":"event"}
});
});
// 3. render component to test
const {getAllByText} = render(
<Router history={history}>
<Provider store={store}>
<I18nextProvider i18n={i18nTest}>
<Events />
</I18nextProvider>
</Provider>
</Router>
);
await wait(() => {
expect(getAllByText(/event/i)).toHaveLength(1);
});
});
Комментарии:
1. Не могу помочь без минимального, воспроизводимого примера. Покажите тестируемый код