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