Testing Standards
Overview
Testing patterns and conventions using Vitest. Tests live alongside source files with the .test.ts extension. These rules cover file organization, mocking strategies, and coverage expectations.
Rules
File Structure and Naming
Place test files next to the source they test. Use .test.ts as the extension. Name describe blocks after the module or function under test, and write test cases as "should + expected behavior."
Correct
Write Clear Test Cases
Each test should have a single assertion focus. Use async/await for asynchronous code and toMatchObject for partial matching.
Correct
Mock External Dependencies
Use vi.mock for module-level mocks and vi.fn for individual functions. Replace real I/O (file system, network) with deterministic mocks.
Correct
Organize Tests by Feature
Group related tests with nested describe blocks. Use beforeEach to reset mocks and shared state before each test.
Correct
Meet Coverage Requirements
Target the following minimum coverage levels by area.
Test Edge Cases and Error Handling
Test pure functions exhaustively, including boundary values and error paths.