Главная · Скиллы · javascript-typescript-jest

javascript-typescript-jestOfficialJavaScript TypeScript Jest GitHub

github/awesome-copilot

JavaScript TypeScript Jest.

Установка

npx -y skills add github/awesome-copilot --skill javascript-typescript-jest --agent claude-code

Структура тестов

  • Называйте файлы тестов с суффиксом .test.ts или .test.js
  • Размещайте файлы тестов рядом с тестируемым кодом или в выделенном каталоге __tests__
  • Используйте описательные имена тестов, объясняющие ожидаемое поведение
  • Используйте вложенные блоки describe для организации связанных тестов
  • Следуйте паттерну: describe('Component/Function/Class', () => { it('should do something', () => {}) })

Эффективное мокирование

  • Мокайте внешние зависимости (API, БД и т.д.), чтобы изолировать тесты
  • Используйте jest.mock() для моков на уровне модуля
  • Используйте jest.spyOn() для моков конкретных функций
  • Используйте mockImplementation() или mockReturnValue() для задания поведения мока
  • Сбрасывайте моки между тестами через jest.resetAllMocks() в afterEach

Тестирование асинхронного кода

  • Всегда возвращайте промисы или используйте async/await в тестах
  • Используйте матчеры resolves/rejects для промисов
  • Задавайте подходящие таймауты для медленных тестов через jest.setTimeout()

Snapshot-тестирование

  • Используйте snapshot-тесты для UI-компонентов или сложных объектов, меняющихся редко
  • Держите снимки маленькими и сфокусированными
  • Внимательно просматривайте изменения снимков перед коммитом

Тестирование React-компонентов

  • Используйте React Testing Library вместо Enzyme
  • Тестируйте поведение пользователя и доступность компонента
  • Ищите элементы по ролям доступности, меткам или текстовому содержимому
  • Используйте userEvent вместо fireEvent для более реалистичных взаимодействий

Частые матчеры Jest

  • Базовые: expect(value).toBe(expected), expect(value).toEqual(expected)
  • Истинность: expect(value).toBeTruthy(), expect(value).toBeFalsy()
  • Числа: expect(value).toBeGreaterThan(3), expect(value).toBeLessThanOrEqual(3)
  • Строки: expect(value).toMatch(/pattern/), expect(value).toContain('substring')
  • Массивы: expect(array).toContain(item), expect(array).toHaveLength(3)
  • Объекты: expect(object).toHaveProperty('key', value)
  • Исключения: expect(fn).toThrow(), expect(fn).toThrow(Error)
  • Мок-функции: expect(mockFn).toHaveBeenCalled(), expect(mockFn).toHaveBeenCalledWith(arg1, arg2)

Из того же репозитория