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)
Из того же репозитория
git-commitOfficial — git коммит GitHub Copilot
github/awesome-copilot
Git коммит.
gh-cliOfficial — GitHub CLI Awesome Copilot
github/awesome-copilot
GitHub CLI.
excalidraw-diagram-generatorOfficial — генератор диаграмм Excalidraw GitHub
github/awesome-copilot
Генератор диаграмм Excalidraw.
documentation-writerOfficial — писатель документации GitHub Copilot
github/awesome-copilot
Писатель документации.
prdOfficial — PRD GitHub Copilot
github/awesome-copilot
Документ требований к продукту.
refactorOfficial — рефакторинг GitHub Copilot
github/awesome-copilot
Рефакторинг.
