zod-fast-check
例
code:ts
import * as z from "zod";
import * as fc from "fast-check";
import { ZodFastCheck } from "zod-fast-check";
// Define a Zod schema
const User = z.object({
firstName: z.string(),
lastName: z.string(),
});
// Define an operation using the data type
function fullName(user: unknown): string {
const parsedUser = User.parse(user);
return ${parsedUser.firstName} ${parsedUser.lastName};
}
// zodからfast-check用に変換
const userArbitrary = ZodFastCheck().inputOf(User);
// Use the arbitrary in a property-based test
test("User's full name always contains their first and last names", () =>
fc.assert(
fc.property(userArbitrary, (user) => {
const name = fullName(user);
expect(name).toContain(user.firstName);
expect(name).toContain(user.lastName);
})
));