CLSkills
Testingintermediate

Mock Generator

Share

Generate mocks, stubs, and fakes for dependencies

Mock Generator

Generate mocks, stubs, and fakes for dependencies

Generate mocks, stubs, and fakes for external dependencies.

Instructions

  1. Identify what to mock (read the function under test):

    • Database queries → mock the repository/ORM
    • HTTP calls → mock the HTTP client or use MSW
    • File I/O → mock fs module
    • Time → mock Date.now() or timers
    • Environment → mock process.env
  2. Generate mocks per pattern:

// Jest manual mock — create __mocks__/database.ts
export const getUser = jest.fn();
export const saveUser = jest.fn();

// Usage in test:
jest.mock('../database');
import { getUser } from '../database';
(getUser as jest.Mock).mockResolvedValue({ id: 1, name: 'Test User' });

// MSW for HTTP mocking (intercepts at network level):
import { rest } from 'msw';
import { setupServer } from 'msw/node';

const server = setupServer(
  rest.get('/api/users/:id', (req, res, ctx) => {
    return res(ctx.json({ id: req.params.id, name: 'Mock User' }));
  })
);
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
  1. For spies (verify a function was called):
const sendEmail = jest.spyOn(emailService, 'send');
await registerUser(userData);
expect(sendEmail).toHaveBeenCalledWith(
  expect.objectContaining({ to: userData.email })
);

Rules

  • Mock at the boundary (DB, HTTP, filesystem) — not internal functions
  • Reset mocks between tests: beforeEach(() => jest.clearAllMocks())
  • Prefer MSW over manual fetch mocks (catches real integration issues)

Quick Info

CategoryTesting
Difficultyintermediate
Version1.0.0
AuthorClaude Skills Hub
testingmocksstubs

Install command:

curl -o ~/.claude/skills/mock-generator.md https://claude-skills-hub.vercel.app/skills/testing/mock-generator.md