javascript-typescript-jest

Installation
Summary

Jest testing best practices for JavaScript and TypeScript projects with mocking, async handling, and React patterns.

  • Organize tests with descriptive names in nested describe blocks, using .test.ts/.test.js files placed alongside source code or in __tests__ directories
  • Mock external dependencies with jest.mock(), jest.spyOn(), and mockImplementation(), resetting between tests to prevent state leakage
  • Handle async code with promises, async/await, and resolves/rejects matchers; set timeouts for slow tests
  • Test React components with React Testing Library, querying by accessibility roles and labels, and using userEvent for realistic interactions
  • Includes 20+ common matchers covering truthiness, numbers, strings, arrays, objects, exceptions, and mock function assertions
SKILL.md

Test Structure

  • Name test files with .test.ts or .test.js suffix
  • Place test files next to the code they test or in a dedicated __tests__ directory
  • Use descriptive test names that explain the expected behavior
  • Use nested describe blocks to organize related tests
  • Follow the pattern: describe('Component/Function/Class', () => { it('should do something', () => {}) })

Effective Mocking

  • Mock external dependencies (APIs, databases, etc.) to isolate your tests
  • Use jest.mock() for module-level mocks
  • Use jest.spyOn() for specific function mocks
  • Use mockImplementation() or mockReturnValue() to define mock behavior
  • Reset mocks between tests with jest.resetAllMocks() in afterEach

Testing Async Code

  • Always return promises or use async/await syntax in tests
  • Use resolves/rejects matchers for promises
  • Set appropriate timeouts for slow tests with jest.setTimeout()
Related skills

More from github/awesome-copilot

Installs
10.4K
GitHub Stars
32.7K
First Seen
Feb 25, 2026