jest — скилл для Claude Code: правила тестов на Jest
Скилл задаёт агенту правила написания тестов на Jest: структура, моки, ассерты, асинхронность. Пригодится, когда тесты в проекте пишет ИИ.
npx skills add Mindrally/skills --skill jest -a claude-codeЧто делает jest
Скилл описывает, как агент должен писать тесты на Jest в проектах на JavaScript и TypeScript. Внутри — набор правил: имена тестов объясняют ожидаемое поведение, блоки describe группируют проверки, каждый тест идёт по схеме Arrange-Act-Assert и проверяет одну вещь.
Отдельные разделы про изоляцию и моки. Для подготовки и очистки используются beforeEach, afterEach, а beforeAll и afterAll — только для дорогой настройки, которую можно переиспользовать. Модули подменяются через jest.mock(), функции — через jest.fn(), а jest.spyOn() нужен, когда вызовы надо отследить, но реализацию сохранить. Между тестами моки чистятся через jest.clearAllMocks(). Есть и предупреждение: не увлекаться подменой, где можно проверить настоящее поведение.
По ассертам правило простое: брать самый точный матчер. toEqual для объектов, toBe для примитивов, снапшоты — редко и с понятными именами. Асинхронные тесты возвращают промис или используют async/await, а покрытие измеряется флагом --coverage. Скилл ничего не устанавливает в проект, поэтому конфликтов с вашим конфигом Jest не будет — это только инструкция для агента.
Какие задачи решает
- писать тесты на Jest по единому шаблону
- разложить проверки по блокам describe
- подменить модуль или функцию в тесте
- проверить асинхронный код без повисших промисов
- следить за покрытием через флаг --coverage
Примеры запросов агенту
- Напиши тесты на Jest для модуля
fetchUser: успешный ответ API и ошибка. - Отрефактори эти тесты: вынеси подготовку в
beforeEach, почисти моки черезjest.clearAllMocks(). - Добавь негативные кейсы к тестам и проверь покрытие с
--coverage.
Как установить jest
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill jest -a claude-code2Вручную: положить файлы
~/.claude/skills/jest/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/jest/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill jest -a codex2Вручную: положить файлы
.agents/skills/jest/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill jest -a cursor2Вручную: положить файлы
.cursor/skills/jest/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills jest2Вручную: положить файлы
.github/skills/jest/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill jest -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path jestВручную: положить файлы
.devin/skills/jest/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill jest -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора168
Похожие
Рядом в теме «Тесты и QA»
Всё по теме «Тесты и QA» →Вопросы о jest
Как установить скилл jest в Claude?
Выполните npx skills add Mindrally/skills --skill jest -a claude-code. Файл скилла окажется в ~/.claude/skills/jest/SKILL.md.
Что делает скилл jest?
Задаёт агенту правила написания тестов на Jest: структура тестов, подготовка и очистка, моки, ассерты, асинхронные проверки и работа с покрытием.
Скилл ставит Jest в проект?
Нет. Это инструкция для агента, сам пакет Jest и его конфиг он не трогает.
Исходный текст
SKILL.md · Apache-2.0
---
name: jest
description: Jest testing best practices for JavaScript and TypeScript applications, covering test structure, mocking, and assertion patterns.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Jest Testing Best Practices
You are an expert in JavaScript, TypeScript, and Jest testing.
## Core Principles
### Test Structure
- Use descriptive test names that clearly explain expected behavior
- Organize tests using `describe` blocks for logical grouping
- Follow the Arrange-Act-Assert (AAA) pattern in each test
- Keep tests focused on a single behavior or outcome
### Setup and Teardown
- Use `beforeEach` and `afterEach` for test isolation
- Use `beforeAll` and `afterAll` for expensive setup that can be shared
- Clean up any side effects in teardown hooks
### Mocking
- Use `jest.mock()` for module mocking
- Use `jest.fn()` for function mocks
- Use `jest.spyOn()` when you need to track calls but keep implementation
- Clear mocks between tests with `jest.clearAllMocks()`
- Avoid over-mocking: test real behavior when feasible
### Assertions
- Use the most specific matcher available
- Prefer `toEqual` for object comparison, `toBe` for primitives
- Use `toMatchSnapshot` sparingly and with meaningful names
- Include negative test cases (what should NOT happen)
### Async Testing
- Always return promises or use async/await in async tests
- Use `waitFor` from testing libraries for async assertions
- Set appropriate timeouts for long-running tests
### Coverage
- Aim for meaningful coverage, not just high percentages
- Test edge cases and error conditions
- Use `--coverage` flag to track coverage metrics
### Best Practices
- Keep tests DRY but readable (prefer clarity over brevity)
- Test behavior, not implementation details
- Make tests deterministic (no random data without seeding)
- Use factories or builders for test data creation
## Example Patterns
```javascript
describe('fetchUser', () => {
it('should return user data when API call succeeds', async () => {
const mockUser = { id: 1, name: 'John' };
jest.spyOn(api, 'get').mockResolvedValue(mockUser);
const result = await fetchUser(1);
expect(result).toEqual(mockUser);
expect(api.get).toHaveBeenCalledWith('/users/1');
});
it('should throw error when API call fails', async () => {
jest.spyOn(api, 'get').mockRejectedValue(new Error('Not found'));
await expect(fetchUser(999)).rejects.toThrow('Not found');
});
});
```
© Mindrally · Apache-2.0 · Mindrally/skills