Générateur Jest

VérifiéPrudence

Générer des tests unitaires Jest pour JavaScript/TypeScript avec mocking, couverture et bonnes pratiques.

Spar Skills Guide Bot
TestingIntermédiaire
23/07/2026
Claude Code
#jest#unit-testing#typescript#javascript#mocking

Recommandé pour

Synthèse automatique

Génère des tests unitaires Jest pour du code JavaScript/TypeScript, y compris des composants React, avec mocks, spies et structure en blocs describe.

Points forts

  • Couvre les patterns Jest essentiels : mocks de modules, spies, faux timers, tests asynchrones et matchers courants
  • Impose une convention claire de nommage des fichiers de test alignée sur l'arborescence source
  • Fournit un modèle de structure Arrange/Act/Assert avec nettoyage des mocks dans beforeEach/afterEach
  • Inclut des exemples de tests de composants React avec @testing-library

Limites

  • La section Quality Checklist est tronquée dans le fichier fourni
  • Les commandes d'exécution privilégient bun, ce qui peut ne pas correspondre à un projet configuré avec npm ou yarn
  • Ne traite pas de la configuration Jest initiale ni des seuils de couverture
Quand l'utiliser

À utiliser lorsqu'il faut créer ou compléter des tests Jest pour un module JS/TS ou un composant React existant.

Quand l'éviter

À éviter si le projet utilise Vitest, Mocha ou Playwright plutôt que Jest, car les patterns et l'API diffèrent.

Analyse de sécurité

Prudence
Score qualité88/100

The skill is a straightforward Jest test-generation guide. It does not contain destructive commands, credential/token exfiltration, obfuscated payloads (curl|sh, base64), or attempts to disable safety controls. Its only elevated risk comes from the declared Bash/Write/Edit tools, which are used legitimately to create test files and run test commands — standard, powerful-but-expected capabilities for a coding skill, hence 'caution' rather than 'safe' or 'risky'.

Points d'attention
  • •Declares Bash along with Write/Edit, allowing the agent to execute commands and modify files in the repo (used here for running test suites)
  • •Suggests running `bun test` / `npm test`, which executes project-defined scripts that may have side effects
Comment cette analyse est faite

Exemples

Test a utility module
Write Jest unit tests for src/utils/validator.ts, covering the happy path, edge cases, and error handling, with mocks where needed.
Test a React component
Generate a Jest test file for src/components/Button.tsx using @testing-library/react and verify the onClick handler fires.
Add missing coverage
Add missing Jest test coverage to src/models/User.ts, including async methods and error cases with proper mocking.

name: jest-generator description: Generate Jest unit tests for JavaScript/TypeScript with mocking, coverage. Use for JS/TS modules, React components, test generation, or encountering missing coverage, improper mocking, test structure errors. allowed-tools: Read, Write, Edit, Bash, Grep, Glob

Jest Generator Skill

Purpose

Generate Jest-based unit tests for JavaScript and TypeScript code, following Jest conventions and best practices with proper mocking, describe blocks, and code organization.

When to Use

  • Generate Jest tests for JavaScript/TypeScript modules
  • Create test files for React components
  • Add missing test coverage to existing code
  • Need Jest-specific patterns (mocks, spies, snapshots)

Test File Naming

Source to Test Mapping:

  • src/components/Feature.tsx → src/components/Feature.test.tsx
  • src/utils/validator.ts → src/utils/validator.test.ts
  • src/models/User.ts → src/models/User.test.ts

Running Tests

# Preferred: Using bun (faster)
bun test

# Run specific file
bun test src/utils/validator.test.ts

# Run with coverage
bun test --coverage

# Watch mode
bun test --watch

# Alternative: Using npm
npm test
npm test -- --coverage

Jest Test Structure

import { functionToTest, ClassToTest } from './Feature'

jest.mock('./dependency')

describe('ModuleName', () => {
  beforeEach(() => {
    jest.clearAllMocks()
  })

  afterEach(() => {
    jest.restoreAllMocks()
  })

  describe('ClassName', () => {
    let instance: ClassToTest

    beforeEach(() => {
      instance = new ClassToTest()
    })

    it('should return expected result with valid input', () => {
      // Arrange
      const input = { key: 'value' }
      const expected = { processed: true }

      // Act
      const result = instance.method(input)

      // Assert
      expect(result).toEqual(expected)
    })

    it('should throw error with invalid input', () => {
      expect(() => instance.method(null)).toThrow('Invalid input')
    })
  })
})

Jest-Specific Patterns

Mocking

// Mock entire module
jest.mock('./api', () => ({
  fetchData: jest.fn(),
}))

// Mock with implementation
const mockFn = jest.fn((x: number) => x * 2)

// Spy on method
const spy = jest.spyOn(obj, 'method').mockReturnValue('mocked')
spy.mockRestore()

Async Testing

it('should resolve with data', async () => {
  const result = await asyncFunction()
  expect(result).toBeDefined()
})

it('should reject with error', async () => {
  await expect(asyncFunction()).rejects.toThrow('Error')
})

Timers

beforeEach(() => jest.useFakeTimers())
afterEach(() => jest.useRealTimers())

it('should execute after timeout', () => {
  const callback = jest.fn()
  setTimeout(callback, 1000)
  jest.advanceTimersByTime(1000)
  expect(callback).toHaveBeenCalled()
})

Common Matchers

// Equality
expect(value).toBe(expected)
expect(value).toEqual(expected)

// Truthiness
expect(value).toBeTruthy()
expect(value).toBeNull()
expect(value).toBeDefined()

// Arrays/Objects
expect(array).toContain(item)
expect(obj).toHaveProperty('key')

// Functions/Promises
expect(fn).toThrow('error')
await expect(promise).resolves.toBe(value)

// Mock functions
expect(mockFn).toHaveBeenCalled()
expect(mockFn).toHaveBeenCalledWith(arg)

React Component Testing

import { render, screen, fireEvent } from '@testing-library/react'
import '@testing-library/jest-dom'
import { Button } from './Button'

describe('Button', () => {
  it('should call onClick when clicked', () => {
    const handleClick = jest.fn()
    render(<Button onClick={handleClick}>Click me</Button>)
    fireEvent.click(screen.getByText('Click me'))
    expect(handleClick).toHaveBeenCalledTimes(1)
  })
})

Quality Checklist

  • [ ] Test file properly named (<module>.test.ts)
  • [ ] All exported functions/classes tested
  • [ ] Happy path and edge cases included
  • [ ] Error conditions tested
  • [ ] External dependencies mocked
  • [ ] Tests organized with describe blocks
  • [ ] beforeEach/afterEach for setup/cleanup
  • [ ] Descriptive test names
  • [ ] Coverage ≥ 80%

Best Practices

  1. Use descriptive test names: should <expected> when <condition>
  2. Organize with describe blocks
  3. Mock external dependencies only
  4. Test user behavior for components
  5. Use test.each for parametrized tests
  6. Keep tests independent
  7. Test error conditions
  8. Aim for 80%+ coverage

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/jest-generator-mrx3xxtk/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/jest-generator-mrx3xxtk' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/jest-generator-mrx3xxtk/download' --output '.skill-downloads/jest-generator-mrx3xxtk/SKILL.md.part' && mv '.skill-downloads/jest-generator-mrx3xxtk/SKILL.md.part' '.skill-downloads/jest-generator-mrx3xxtk/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Bash, Grep, Glob

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/jest-generator-mrx3xxtk/SKILL.md' && test -s '.skill-downloads/jest-generator-mrx3xxtk/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/jest-generator' && cp -R '.skill-downloads/jest-generator-mrx3xxtk' '.claude/skills/jest-generator'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/jest-generator-mrx3xxtk'

openskills read 'jest-generator-mrx3xxtk'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/jest-generator-mrx3xxtk/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires