#reactjs #jestjs #react-testing-library
#reactjs #jestjs #react-testing-library
Вопрос:
Здравствуйте, как я могу издеваться над useQuery? У меня есть компонент контейнера, который отвечает за вызов API, и простой компонент пользовательского интерфейса для отображения данных для пользователя. Я получаю текущую ошибку
console.error node_modules/@testing-library/react/dist/act-compat.js:52
Error: Error: connect ECONNREFUSED 127.0.0.1:80
Контейнер
import React from 'react';
import { screen, waitForElement, getByText } from '@testing-library/react';
import { useQuery } from 'react-fetching-library';
import { render } from 'tests';
import tags from 'api/mocks/tags-response.json';
import { TrendingTagsContainer } from './TrendingTagsContainer';
jest.mock('react-fetching-library');
describe('TrendingTagsContainer component', () => {
test('should render component with correct title and description', async () => {
const action = jest.fn();
const useQuery = jest.fn(action());
useQuery.mockReturnValue({ loading: false, error: false, query: () => true, payload: { tags } });
console.log(useQuery());
const { getByText } = render(<TrendingTagsContainer />);
await waitForElement(() => screen.getByText('#Testing react'));
expect(screen.getByText('#Testing react')).toBeInTheDocument();
});
});
Ответ №1:
Я думаю, вы можете просто издеваться над своим react-fetching-library
модулем следующим образом:
import { useQuery } from 'react-fetching-library';
jest.mock('react-fetching-library');
// Everything looks the same I guess
Комментарии:
1. Спасибо, однако это решение все еще пытается получить внешний api
2.
Error: Error: connect ECONNREFUSED 127.0.0.1:80 at Object.dispatchError
3. Я не уверен, что useQuery будет вызываться несколько раз, поэтому попробуйте издеваться все время, а не только один раз, используя mockImplentation
4. Это находится в верхней части файла, это помогло с устранением ошибки при вызове api. Спасибо!
5. Да, у меня нет ошибки с отказом в подключении, теперь это всего лишь проблема с тестовой оболочкой, большое вам спасибо.