mcpField
J
javascript-typescript-jest

javascript-typescript-jest

github.com/githubTesting & quality40.5k13.2k installsUpdated today
Repository

About javascript-typescript-jest

A skill with practical guidance for structuring and writing JavaScript and TypeScript tests with Jest, including mocks, async code, snapshots, and React components.

Key features

  1. 01Test file organization
  2. 02Dependency mocking
  3. 03Async test patterns
  4. 04Snapshot testing
  5. 05React component testing
  6. 06Common Jest matchers

Use cases

  1. 01Organizing a Jest test suite
  2. 02Isolating external dependencies
  3. 03Testing promises and async behavior
  4. 04Checking React user interactions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/github/awesome-copilot --skill javascript-typescript-jest

After installing, type/javascript-typescript-jestin Claude Code to confirm it loaded.

Details

From the project README
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()
Snapshot Testing
  • Use snapshot tests for UI components or complex objects that change infrequently
  • Keep snapshots small and focused
  • Review snapshot changes carefully before committing
Testing React Components
  • Use React Testing Library over Enzyme for testing components
  • Test user behavior and component accessibility
  • Query elements by accessibility roles, labels, or text content
  • Use userEvent over fireEvent for more realistic user interactions

Common Jest Matchers

  • Basic: expect(value).toBe(expected), expect(value).toEqual(expected)
  • Truthiness: expect(value).toBeTruthy(), expect(value).toBeFalsy()
  • Numbers: expect(value).toBeGreaterThan(3), expect(value).toBeLessThanOrEqual(3)
  • Strings: expect(value).toMatch(/pattern/), expect(value).toContain('substring')
  • Arrays: expect(array).toContain(item), expect(array).toHaveLength(3)
  • Objects: expect(object).toHaveProperty('key', value)
  • Exceptions: expect(fn).toThrow(), expect(fn).toThrow(Error)
  • Mock functions: expect(mockFn).toHaveBeenCalled(), expect(mockFn).toHaveBeenCalledWith(arg1, arg2)

Comments

Markdown supported