Generate mock data from zod schemas. Powered by @faker-js/faker and randexp.js.
Features
- Support almost all zod types
- Support for custom zod types
- Extensive tests
npm install --save-dev zod-schema-faker
Built-in zod types:
import { z } from 'zod'
import { install, fake } from 'zod-schema-faker'
// define a zod schema
const schema = z.number()
// call install() to register fakers
install()
// generate fake data based on schema
const data = fake(schema)
Custom zod types:
import { z } from 'zod'
import { installCustom, fake, getFaker, ZodTypeFaker } from 'zod-schema-faker'
// define a custom zod schema
const pxSchema = z.custom<`${number}px`>(val => {
return typeof val === 'string' ? /^\d+px$/.test(val) : false
})
// define a custom faker
class ZodPxFaker extends ZodTypeFaker<typeof pxSchema> {
fake(): `${number}px` {
return `${getFaker().number.int({ min: 0 })}px`
}
}
// call installCustom() to register custom fakers
installCustom(pxSchema, ZodPxFaker)
// generate fake data based on schema
const data = fake(pxSchema)
Core APIs
function install(): void
: Install fakers for built-in types, must be called before usingfake
.function fake<T extends z.ZodType>(schema: T): z.infer<T>
: Generate fake data based on schema.function seed(value?: number): void
: Sets the seed to use.class ZodSchemaFakerError
Random Utility APIs
function setFaker(faker: Faker): void
: Use given faker instance instead of the default one.function getFaker(): Faker
: Get the faker instance. Defaults tofakerEN
.function randexp(pattern: string | RegExp, flags?: string): string
: Create random strings that match a given regular expression.
Customization APIs - see example for details
class ZodTypeFaker
: Base class for fakers.function installCustom<T extends z.ZodTypeAny>(schema: T, faker: typeof ZodTypeFakerConcrete<T>): void
: Install fakers for custom schemas, must be called before usingfake
.
- methods
- ✅ .and
- ✅ .array
- ✅ .brand
- ✅ .catch
- ✅ .default
- ✅ .nullable
- ✅ .nullish
- ✅ .optional
- ✅ .or
- ✅ .pipe
- ✅ .promise
- ✅ .readonly
- ❌ .refine
- ❌ .superRefine
- ✅ .transform
- ✅ z.any
- ✅ z.array
- ✅ z.bigint
- ✅ z.boolean
- ✅ z.custom: see example for details.
- ✅ z.date
- ✅ z.discriminatedUnion
- ✅ z.enum
- ✅ z.instanceof: see example for details.
- ✅ z.intersection
- ✅ z.function
- ✅ z.lazy
- ✅ z.literal
- ✅ z.map
- ✅ z.nan
- ✅ z.nativeEnum
- ✅ z.never: always throws an error
- ✅ z.null
- ✅ z.number
- ✅ z.object
- ✅ z.preprocess1
- ✅ z.promise
- ✅ z.record
- ✅ z.set
- ✅ z.string2
- ✅ z.symbol
- ✅ z.tuple
- ✅ z.undefined
- ✅ z.union
- ✅ z.unknown
- ✅ z.void
https://github.com/anatine/zod-plugins/tree/main/packages/zod-mock
- Excels at generating realistic data for
z.string
. For instance,z.object({ image: z.string() })
will produce a URL string. - Lacks support for some basic zod types such as
z.any
,z.default
,z.tuple
, etc.
https://github.com/timdeschryver/zod-fixture
- Provides support for custom zod types.
- Occasionally generates invalid mocked data. For example, calling with the function generated from
z.function(z.tuple([]), z.boolean())
did not return a boolean value.
- https://github.com/dipasqualew/zod-mocking
- https://github.com/LorisSigrist/zocker
- https://github.com/ItMaga/zodock
Distributed under the MIT license. See LICENSE for more information.