Как протестировать компонент React с помощью ответа moxios

#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. Не могу помочь без минимального, воспроизводимого примера. Покажите тестируемый код