Посмотрите, как мы можем протестировать асинхронный список

В типичном веб-приложении обязательно будет список для отображения. Это может быть список ноутбуков, автомобилей, фильмов, собственности, пользователей и т. Д. Сегодня мы рассмотрим, как можно протестировать асинхронный список.

Я начал репо с помощью Create React App, вот три дополнительных пакета, которые я использовал для работы:

"@testing-library/react": "^8.0.4"
"axios": "^0.19.0"
"jest-dom": "^3.5.0"

Во-первых, у нас есть этот компонент:

Это просто вызывает API, извлекает данные и отображает имя пользователя на странице. И когда он загружается, мы отображаем "Загрузка…"

Мы должны настроить Шутку, чтобы высмеивать аксиомы. Просто создайте папку __mocks__ в каталоге src, мы назовем файл axios.js с помощью приведенного ниже кода.

Затем мы должны настроить afterEach очистку с помощью Jest, чтобы нам не приходилось повторять это в каждом из наших тестовых файлов.

afterEach(cleanup)

Подробнее об очистке afterEach читайте в документации.

Для этого создайте файл с именем jest.config.js на первом уровне каталога вашего приложения.

Сейчас мы находимся в тестовой части. Создайте файл с именем Users.spec.js (или Users.test.js).

Тест соответствовал двум нашим требованиям. Убедитесь, что загрузчик существует во время выборки данных, и проверьте правильность отображаемого списка.

Если у нас есть дополнительные требования, например, нам нужен отсортированный список, поведение пользователя при нажатии и т. Д., Лучше разделить вышеуказанный тест на несколько тестовых блоков.

Однако нам нужно убедиться, что мы сбросили макет с помощью mockClear, чтобы API не вызывался более одного раза.

Чтобы увидеть тест в действии или продолжить играть с настройкой, вот репо.

Удачного тестирования!