Automatizando la generación de datos ficticios con Seed, Factory, Faker y TypeORM en NestJS
Manuel Gil @imgildev
Posted on March 31, 2023
Introducción
En muchas ocasiones necesitamos generar datos ficticios para probar nuestro desarrollo o llenar nuestra base de datos de pruebas. La creación manual de estos datos puede resultar tediosa y llevar mucho tiempo. En este artículo, hablaremos sobre cómo automatizar el proceso de generación de datos ficticios utilizando TypeORM.
Para empezar es necesaria la instalación de una extensión adicional ya que TypeORM por si solo no cuenta con una opción para generar datos ficticios.
Para el ejemplo se plantea la siguiente estructura de carpetas.
Definiendo un Factory
Un factory es una función que nos sirve para establecer una estructura u objeto con datos aleatorios ficticios en tiempo de ejecución. Con el uso de Faker podemos generar nombres, direcciones, números de teléfono, correos electrónicos y muchos otros tipos de datos ficticios.
En la definición de nuestro Factory se cuenta con una instancia de la librería Faker para generar datos aleatorios.
Por ejemplo, el archivo user.factory.ts contendría.
Se puede encontrar más información acerca de Faker y sus características en fakerjs.dev.
Semilla o Seed
A través de un seed o semilla se puede generar un set de datos aleatorios, para ello se hace uso de una clase seeder que se apoya de un Factory para la creación de datos.
Lo podemos ver en el archivo user.seeder.ts.
En el caso de la entidad post existe una relación que requiere de un usuario en la base de datos, por lo que se hace uso de un dato conocido para agregar esta relación, el archivo post.seeder.ts sería el siguiente.
Para poder tener un mejor control de la ejecución del sets es importante definir un punto de entrada, el cual tiene el nombre init.seeder.ts por convención y será llamado en las configuraciones de TypeORM.
Configuración de TypeORM
Para este ejemplo se define un archivo typeorm.config.ts en el que se hace uso de las entidades, migraciones y seeds.
Esta configuración requiere de las variables de entorno por lo que se hace uso del ConfigModule .
En el archivo .env se deben actualizar las variables para la conexión a la base de datos.
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
Test
# unit tests
$ npm run test# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
La generación de datos ficticios es una parte importante del desarrollo de aplicaciones. Utilizando Seed, Factory y Faker podemos automatizar este proceso y ahorrar mucho tiempo. Con estos tres elementos se puede generar grandes cantidades de datos ficticios de forma rápida y eficiente.