write-tests
4
总安装量
4
周安装量
#51236
全站排名
安装命令
npx skills add https://github.com/acedergren/agentic-tools --skill write-tests
Agent 安装分布
amp
4
gemini-cli
4
claude-code
4
github-copilot
4
codex
4
kimi-cli
4
Skill 文档
Write Tests for Existing Code
Before Writing, Ask Yourself
- Module type? Route handler, repository, plugin, utility, or service â each has a different mock strategy
- Blast radius? Does this module have side effects (DB writes, API calls) that need isolation?
- Nearest test file? Find the closest
*.test.tsand match its structure exactly
Mock Strategy by Module Type
| Module Type | Strategy |
|---|---|
| Route handler | Test app builder + session simulation + app.inject() |
| Repository | Mock DB connection + counter-based execute |
| Framework plugin | Real framework instance + selective dependency mocks |
| Pure utility | No mocks â test inputs/outputs directly |
| Service w/ DI | Mock injected deps via forwarding pattern |
Mock Setup (mockReset: true)
If your test runner uses mockReset: true, most examples from the internet will silently fail.
const { mockFn } = vi.hoisted(() => ({
mockFn: vi.fn(),
}));
vi.mock("./dependency", () => ({
dependency: (...args: unknown[]) => mockFn(...args),
}));
beforeEach(() => {
// MUST reconfigure here â mockReset clears return values between tests
mockFn.mockResolvedValue(defaultResult);
});
For complex TDZ cases (multiple interdependent mocks), use the globalThis registry pattern.
NEVER
- NEVER chain
mockResolvedValueOnceâmockResetclears the chain between tests. Use counter-basedmockImplementationinstead. - NEVER define mock variables at module scope then reference in
vi.mock()factories â hoisting creates a temporal dead zone. Usevi.hoisted()or globalThis. - NEVER
vi.importActual()for modules with side effects â use selective re-exports. - NEVER test implementation details (private state, internal call order) â test behavior through the public API.
- NEVER copy mock patterns from other projects â check YOUR test runner config first.
- NEVER modify source code â this skill writes tests only.
Metacognitive Rule
If >3 tests fail on first run: STOP. The root cause is almost certainly a mock wiring issue affecting all tests, not individual test logic errors. Re-examine the mock setup strategy holistically before fixing tests one by one.
Run
npx vitest run <test-file> --reporter=verbose
Arguments
$ARGUMENTS: Path to the source file or module to cover- Example:
/write-tests src/routes/admin/settings.ts - If empty, ask the user which file needs test coverage
- Example: