Асинхронные экшены в Redux обрабатывают API-запросы и диспатчат действия по результату. Их можно проверить без 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-поведение
— Отсутствие лишних или пропущенных экшенов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5👍3🥰2🔥1
❗ Первый вебинар нашего курса по AI-агентам уже прошёл!
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
🥰4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯6🤩3
При тестировании приложений часто забывают про экраны с необычными разрешениями, например, 800x600 или 5K. Эти размеры требуют отдельного подхода, чтобы убедиться, что интерфейс остаётся функциональным и красивым на всех типах устройств.
Промпт:
How can I check the responsiveness of my application for screen resolutions that are rarely used (e.g., 800x600 or 5K)? What testing tools and
methods should be applied for these screen sizes?Чем полезен:
Дополнительно можно запросить:
— Как настроить медиа-запросы для таких разрешений
— Использование инструментов, таких как Chrome DevTools, для проверки адаптивности
— Рекомендации по улучшению интерфейса для редких экранов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🤩2👍1
Наш подписчик поделился интересной историей:
«Во время тестирования регистрации на сайте я наткнулся на баг, из-за которого пользователи из разных часовых поясов не могли подтвердить свои аккаунты. Всё выглядело нормально, но время для ввода кода подтверждения не совпадало с реальным временем пользователя.
После разбирательства оказалось, что система не учитывала часовой пояс при расчёте времени действия кода. Пришли к такому решению: конвертировать время в UTC и отображать с учётом часового пояса.»
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🤩3😁2
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?
🔥 — я своего завайбкодил
🏃♀️ Ссылка на курс
🔥 — я своего завайбкодил
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5🌚2👏1
Cypress позволяет сохранять и восстанавливать сессию (cookies, localStorage, sessionStorage) при помощи команды
cy.session(), чтобы логин не выполнялся перед каждым it. Это ускоряет тесты и делает их стабильнее.Что еще полезного:
Как настроить:
beforeEach(() => {
cy.session(['[email protected]', '123456'], () => {
cy.visit('/login')
cy.get('input[name="email"]').type('[email protected]')
cy.get('input[name="password"]').type('123456')
cy.get('button[type="submit"]').click()
cy.url().should('contain', '/dashboard')
}, {
cacheAcrossSpecs: false
})
cy.visit('/dashboard')
})
cy.session() — кэширует сессию по идентификатору (массив или строка)cy.session() обязательно добавляйте cy.visit(), чтобы перейти на нужную страницу — Используйте
cacheAcrossSpecs: true, чтобы сессия сохранялась между spec-файлами при запуске cypress run --browser electron (но могут быть нюансы с Chrome)— Для валидации сессии можно добавить
validate() опцию: при неуспехе — сессия пересоздаётся— Cypress.session API позволяет отслеживать и очищать, если необходимо
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👏6🥰3😁1
Вы знаете, как устроен баг-репорт, умеете писать автотесты и работать с API — но ваше резюме на HH никто не смотрит? Значит, пора перестать ждать и начать играть по правилам алгоритма.
Что в карточках:
Если хотите больше откликов — научитесь быть видимым для системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5👍2
Подсказка:
Что за функционал зашифрован?
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4🥰2😁1
Если хочется прокачать навыки руками, а не только читать теорию — вот подборка отличных ресурсов для практики:
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰7❤🔥2👍2
Вы тестируете веб-приложение на разных устройствах.
При ширине окна 768px интерфейс переключается с десктопной версии на мобильную: меню скрывается за иконку, блоки выстраиваются в колонку.
Что с наибольшей вероятностью определяет это поведение
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤩2🤔1
Правильный ответ:
Anonymous Quiz
14%
JavaScript-обработчики мыши
61%
CSS-переменные
19%
Медиазапрос с брекпойнтом
7%
Кэш браузера
😁5🤩3
☝️ Последний шанс купить курсы Proglib Academy с доступом навсегда!
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
Это не просто летняя распродажа, это финал эпохи. Мы дарим скидку 40% на все курсы, включая полностью обновлённый курс по Python (предложение НЕ ДЕЙСТВУЕТ только на курс по AI-агентам для DS-специалистов).
Но главное: с 1 августа доступ ко всем новым курсам станет ограниченным. Успейте инвестировать в свои знания на самых выгодных условиях!
👉 Выбрать курс
🤩5