proposal-factory-decorator
v1.0.0
Published
This module was made to decorate fields to furder create a Factory for that class.
Downloads
17
Maintainers
Readme
Class Factory Decorators
This package is aimed to testing and seeding at your projects. It's easy to implement and create your own class factory.
Install through cli via command
You might want to use this quick cli command to install the package.
npm i --save proposal-factory-decorator
Example code
In this example, we can see how the @Factory decorator works. It's quite simple and easy to duplicate.
import { Factory, CreateFactory } from "proposal-factory-decorator";
class User {
@Factory(() => "name")
field: string;
@Factory(() => false)
isTrue: boolean;
}
const userFact = new CreateFactory() < User > User;
(async () => {
const user = await userFact.generate(); // Creates an User
console.log(user); // { field: "name", isTrue: false }
})();
Recommends
It's highly recommended to use faker package. The faker package provides useful evaluations to our @Factory method.
npm i --save faker @types/faker
One simple example (extending the example above) to use faker lib
import { Factory, CreateFactory } from "proposal-factory-decorator";
import faker from "faker";
class User {
@Factory(() => faker.name.findName())
name: string;
@Factory(() => faker.internet.email())
email: boolean;
}
const userFact = new CreateFactory() < User > User;
(async () => {
const user = await userFact.generate(); // Creates a faker User
console.log(user); // { name: "Some random name", email: "[email protected]" }
})();
Caution
The @Factory decorator only works with the CreateFactory class. If you try to do something like
class DontWork {
@Factory(() => somevalue)
field: any;
}
console.log(new DontWork()); // it will print this empty value {}
If you want to support me, go check my Patreon!
Happy coding you all 🖥️🙇!