CLSkills
Testingintermediate

Test Data Factory

Share

Create test data factories and fixtures

Test Data Factory

Create test data factories and fixtures

Create test data factories and fixtures.

Instructions

  1. Create a factory for each entity:
// factories/user.ts
let idCounter = 1;

interface UserOverrides {
  name?: string;
  email?: string;
  role?: 'admin' | 'user';
  isActive?: boolean;
}

export function createUser(overrides: UserOverrides = {}): User {
  const id = idCounter++;
  return {
    id,
    name: overrides.name ?? `Test User ${id}`,
    email: overrides.email ?? `user${id}@test.com`,
    role: overrides.role ?? 'user',
    isActive: overrides.isActive ?? true,
    createdAt: new Date(),
  };
}

// Related entities
export function createOrder(user?: User, overrides: Partial<Order> = {}): Order {
  const u = user ?? createUser();
  return {
    id: idCounter++,
    userId: u.id,
    status: overrides.status ?? 'pending',
    total: overrides.total ?? 99.99,
    items: overrides.items ?? [createOrderItem()],
  };
}
  1. Usage in tests:
it('should apply discount for active admin users', () => {
  const admin = createUser({ role: 'admin', isActive: true });
  const order = createOrder(admin, { total: 200 });
  expect(calculateDiscount(admin, order)).toBe(20);
});

Rules

  • Factories always produce valid data by default
  • Only override what the test cares about
  • Reset counters between test suites if IDs matter

Quick Info

CategoryTesting
Difficultyintermediate
Version1.0.0
AuthorClaude Skills Hub
testingfixturesdata

Install command:

curl -o ~/.claude/skills/test-data-factory.md https://claude-skills-hub.vercel.app/skills/testing/test-data-factory.md