- ✅ Type Safety - It helps prevent configuration errors and typos.
- ⚙️ Highly Functional - You can define variables, traits, and properties that depend on other properties.
- 🪶 Lightweight - It is very lightweight as it does not depend on any other packages.
- 📦 ORM-Friendly API - Designed to be used also with ORMs like Prisma and Drizzle.
- Install FactoryJS.
pnpm add -D @factory-js/factory
- Define a factory and use it in your tests, database seeds, etc.
import { factory } from "@factory-js/factory";
// Define the factory
const userFactory = factory.define({
props: {
firstName: () => "John",
lastName: () => "Doe",
role: () => "guest",
},
vars: {},
});
describe("when a user is admin", () => {
it("returns true", async () => {
const user = await userFactory(db)
.props({ role: () => "admin" }) // Override role to admin
.build();
expect(isAdmin(user)).toBe(true);
});
});
To learn more about FactoryJS, check the Documentation.