Testing 194 installs

javascript-typescript-jest

by github/awesome-copilot

Best practices for writing JavaScript/TypeScript tests using Jest, including mocking strategies, test structure, and common patterns.

Skill content

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

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()