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