Получить доступ

Юнит-тесты и тесты компонентов

Основа

Vitest и Testing Library — проверять поведение, а не реализацию.

import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";

test("добавляет товар в корзину", async () => {
  render(<Product id={1} />);
  await userEvent.click(screen.getByRole("button", { name: "В корзину" }));
  expect(screen.getByText("В корзине: 1")).toBeInTheDocument();
});

Что важно знать

  • Testing Library ищет элементы так, как их видит пользователь: по роли, подписи, тексту. Тест не ломается при рефакторинге внутренностей.
  • Не проверять внутреннее состояние и количество рендеров — только видимое поведение.
  • Сетевые запросы подменять на уровне сети (MSW), а не мокать fetch в каждом тесте.
  • Таймеры — фейковые (vi.useFakeTimers), асинхронность — findBy… и waitFor.
  • Покрытие кода — ориентир, а не цель.

Документация

← Вся карта «Frontend-разработчик»

Закрытая бета

Знать тему — половина дела

На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем