TGViewer
Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты @testerlib · 8.97K subscribers
Post #3608 844
⭐️ Как протестировать асинхронные экшены в Redux

Асинхронные экшены в Redux обрабатывают API-запросы и диспатчат действия по результату. Их можно проверить без UI — через мок-хранилище и анализ последовательности.

Почему важно:

📍 Проверка цепочки: запуск → результат → обработка

📍 Контроль над данными и ошибками

📍 Возможность изолировать бизнес-логику от UI

Как протестировать:

1. Установим зависимости:


npm install redux-mock-store redux-thunk --save-dev


2. Создадим мок-хранилища:


import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';

const store = configureStore([thunk])();


3. Пример экшена:


export const fetchData = () => async dispatch => {
dispatch({ type: 'FETCH_START' });
try {
const res = await fetch('/api/data');
const data = await res.json();
dispatch({ type: 'FETCH_SUCCESS', payload: data });
} catch (e) {
dispatch({ type: 'FETCH_ERROR', error: true });
}
};


4. Позитивный сценарий:


it('dispatches FETCH_START и FETCH_SUCCESS', async () => {
global.fetch = jest.fn(() =>
Promise.resolve({ json: () => Promise.resolve({ name: 'test' }) })
);

await store.dispatch(fetchData());

const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_SUCCESS', payload: { name: 'test' } }
]);
});


5. Негативный сценарий (сетевая ошибка):


it('dispatches FETCH_ERROR при сбое запроса', async () => {
global.fetch = jest.fn(() => Promise.reject('Network error'));

await store.dispatch(fetchData());

const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_ERROR', error: true }
]);
});


Что проверяет тестировщик:

— Последовательность действий

— Корректность переданных данных

— Обработку ошибок и fallback-поведение

— Отсутствие лишних или пропущенных экшенов

💡 Такие проверки позволяют выявлять ошибки бизнес-логики без зависимости от UI. Это удобно при регрессионном тестировании, CI и тестировании без доступа к фронту.

🐸 Библиотека тестировщика

#буст
  • 🤩 5
  • 👍 3
  • 🥰 2
  • 🔥 1
More from @testerlib
  1. Oct 15, 2026☔️ Планы на выходные снова испортила погода? У нас есть план получше. Выходные — хороший п…
  2. Oct 15, 2026Пять минут без sleep: проверяем таймаут интерфейса Тест ждёт выхода по бездействию? В Play…
  3. Oct 14, 2026Новый уровень ИТ-практик: Импульс Т1 снова в Москве 🚀 19 ноября столица примет ИТ-конфере…
  4. Oct 13, 2026👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефо…
  5. Oct 10, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  6. Oct 10, 2026Post #5135
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →