@dependabit/test-utils
v0.1.14
Published
Shared testing utilities for the monorepo
Readme
@dependabit/test-utils
Shared testing utilities for the monorepo using Vitest.
Features
- Mock utilities - Create mocks and spies
- Test fixtures - Pre-built test data
- API helpers - Mock API responses
- Type-safe - Full TypeScript support
Installation
pnpm add -D @dependabit/test-utilsUsage
Creating Test Data
import { createMockUser, createMockEmail, createMockApiResponse } from '@dependabit/test-utils';
// Create a mock user
const user = createMockUser({ name: 'Alice' });
// Create a mock email
const email = createMockEmail({ to: '[email protected]' });
// Create a mock API response
const response = createMockApiResponse({ status: 201 });Mocking Functions
import { createMockFn, spyOn } from '@dependabit/test-utils';
// Create a mock function
const mockFn = createMockFn();
mockFn.mockResolvedValue({ id: 1 });
// Spy on console
const consoleSpy = spyOn(console, 'log');
console.log('test');
expect(consoleSpy).toHaveBeenCalledWith('test');Working with Time
import { createMockTimer } from '@dependabit/test-utils';
it('should handle timeouts', () => {
const timer = createMockTimer();
setTimeout(() => {
doSomething();
}, 1000);
timer.advanceTimersByTime(1000);
timer.restore();
});Mocking Fetch
import { mockFetch } from '@dependabit/test-utils';
it('should fetch data', async () => {
mockFetch('/api/users', { success: true });
const response = await fetch('/api/users');
const data = await response.json();
expect(data.success).toBe(true);
});API
Mock Functions
createMockFn(): Mock- Create a mock function
Spies
spyOn<T, K>(obj: T, method: K): Spy- Spy on object method
Timers
createMockTimer(): MockTimer- Create a fake timer controller.runAll()- Run all timers.advanceTimersByTime(ms)- Advance by milliseconds.restore()- Restore real timers
Fixtures
createMockUser(overrides?): User- Create a usercreateMockEmail(overrides?): Email- Create an emailcreateMockApiResponse(overrides?): ApiResponse- Create an API responsecreateMockErrorResponse(message?): ApiResponse- Create an error responsecreateMockArray<T>(count: number, factory): T[]- Create an array of mocks
Examples
Full Test Example
import { describe, it, expect } from 'vitest';
import {
createMockUser,
createMockFn,
createMockApiResponse,
} from '@dependabit/test-utils';
describe('UserService', () => {
it('should fetch and process user', async () => {
// Arrange
const mockUser = createMockUser({ name: 'Alice' });
const mockFn = createMockFn();
mockFn.mockResolvedValue(createMockApiResponse({ user: mockUser }));
// Act
const response = await mockFn();
// Assert
expect(response.success).toBe(true);
expect(response.data.user.name).toBe('Alice');
});
});Testing
# Run tests (if any)
pnpm --filter @dependabit/test-utils testLicense
MIT
