Skip to content

Deterministic data with a seed

Set seed so the factories call faker.seed(...) and return the same values on every run. This keeps snapshot tests stable and makes a failing case reproducible.

kubb.config.ts
typescript
import { defineConfig } from 'kubb/config'
import { pluginTs } from '@kubb/plugin-ts'
import { pluginFaker } from '@kubb/plugin-faker'

export default defineConfig({
  input: './petStore.yaml',
  output: { path: './src/gen', clean: true },
  plugins: [
    pluginTs(),
    pluginFaker({
      output: { path: 'mocks', mode: 'directory' },
      seed: [100],
    }),
  ],
})

Output example

src/gen/mocks/createPet.ts
typescript
import type { Pet } from '../types/Pet'
import { createCategory } from './createCategory'
import { createTag } from './createTag'
import { fakerEN as faker } from '@faker-js/faker'

export function createPet<TData extends Partial<Pet> = object>(data?: TData)
{
  faker.seed([100])
  const defaultFakeData = {
  id: faker.number.bigInt(),
  name: faker.string.alpha(),
  category: createCategory(),
  photoUrls: faker.helpers.multiple(() => (faker.string.alpha())),
  tags: faker.helpers.multiple(() => (createTag())),
  status: faker.helpers.arrayElement<NonNullable<Pet>["status"]>(['available', 'pending', 'sold']),
}
  return {
    ...defaultFakeData,
    ...(data || {}),
  } as Omit<typeof defaultFakeData, keyof TData> & TData
}
usage.ts
typescript
import { createPet } from './src/gen/mocks/createPet'

const pet = createPet()
const overridden = createPet({ name: 'Rex' })