Cómo generar y usar registros falsos con las fábricas de modelos de Laravel
Publicado: 2023-04-28Las pruebas son esenciales para el desarrollo web. Las fábricas de Laravel Model definen los registros de la base de datos de una manera predecible y fácilmente replicable para que las pruebas de su aplicación sean consistentes y controladas. Las fábricas de modelos definen un conjunto de atributos predeterminados para cada uno de sus modelos de Eloquent.
Por ejemplo, si está creando una aplicación de blogs que permite a los autores y moderadores aprobar los comentarios antes de que se publiquen, deberá probar si la función funciona correctamente antes de implementarla para sus usuarios. Todo esto requiere datos de prueba.
Para probar la aplicación de blogs descrita anteriormente, necesita datos de comentarios para imitar y probar la funcionalidad de su aplicación. Laravel te permite hacer eso sin recibir comentarios de usuarios reales mediante el uso de fábricas de Laravel y Faker para generar datos falsos.
Este artículo explica cómo obtener datos de comentarios sin comentarios de usuarios reales.
requisitos previos
Para completar este tutorial, debe estar familiarizado con lo siguiente:
- XAMPP
- Compositor
XAMPP es una distribución de Apache gratuita y fácil de instalar que contiene PHP, Perl y MariaDB, una base de datos MySQL. Este tutorial utiliza la última versión, 8.1.10, que instala PHP 8.1.10. Lea este artículo si instala XAMPP para MacOS o esta guía para Linux. Este tutorial usa XAMPP en Windows.
Composer es una herramienta que le permite definir, instalar y descargar los paquetes de los que depende su aplicación web en desarrollo y producción. Este tutorial utiliza la versión v2.4.4 de Composer, que requiere la versión 7.2+ de PHP. Utiliza Composer para instalar el instalador de Laravel para este tutorial.
También puede descargar el código completo para que el proyecto lo siga.
Cómo configurar el proyecto
En esta sección, creará un proyecto de Laravel y lo conectará a una base de datos. Echemos un vistazo a todo lo que implica y cómo lograrlo.
Instalar el instalador de Laravel
Para crear un proyecto de Laravel rápidamente, instale el instalador de Laravel:
composer global require laravel/installer
Este código instala el instalador de Laravel globalmente en su máquina.
Crear un proyecto Laravel
A continuación, cree un proyecto de Laravel ejecutando lo siguiente:
laravel new app-name
Este código inicia un nuevo proyecto de Laravel e instala todas las dependencias:
Otra forma más fácil de instalar Laravel es usar Composer directamente.
composer create-project laravel/laravel app-name
No necesita instalar el instalador de Laravel cuando usa el método anterior.
Iniciar la aplicación
Ahora puede cambiar el directorio a app-name e iniciar el proyecto utilizando la propia herramienta de interfaz de línea de comandos (CLI) de Laravel, Artisan:
php artisan serve
Este código inicia el proyecto y lo conecta a localhost:8000 o cualquier otro puerto disponible si el puerto 8000 está en uso. En localhost:8000, debería ver algo como esto:
Crear una base de datos
Para conectar su aplicación a una base de datos, debe crear una nueva base de datos utilizando la interfaz gráfica de usuario PHPMyAdmin de XAMPP. Vaya a localhost/phpmyadmin y haga clic en Nuevo en la barra lateral:
La imagen de arriba muestra el formulario Crear base de datos con app_name como nombre de la base de datos.
Haga clic en Crear para crear una base de datos.
Edite el archivo .env
Para conectar su aplicación a una base de datos, debe editar la parte DB del archivo .env :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=
Este código llena las credenciales de la base de datos con su nombre de base de datos, nombre de usuario, puerto, contraseña y host. Ahora está listo para comenzar a crear fábricas y modelos.
Nota: Reemplace los valores con las credenciales de su base de datos. Además, si encuentra el error "Acceso denegado para el usuario", escriba los valores de DB_USERNAME
y DB_PASSWORD
entre comillas dobles.
Cómo generar datos falsos
Después de crear la aplicación y conectarla a la base de datos, ahora puede crear los archivos necesarios para generar datos falsos en la base de datos.
Crear el modelo de comentario
Cree el archivo modelo para interactuar con las tablas de la base de datos. Para crear un modelo, use Artisan:
php artisan make:model Comment
Este código crea un archivo Comment.php dentro de la carpeta app/M odels con algún código repetitivo. Agregue el siguiente código debajo del use HasFactory;
línea:
protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];
Este código enumera los campos que desea permitir asignaciones masivas porque Laravel protege su base de datos de asignaciones masivas de forma predeterminada. El archivo del modelo de comentario ahora debería verse así:
Crear el archivo de migración
Después de crear el archivo modelo y declarar la matriz $fillable
, debe crear el archivo de migración con el siguiente comando:
php artisan make:migration create_comments_table
Nota: la convención de nomenclatura para crear migraciones en Laravel suele ser snake_case
, también conocida como underscore_case
. La primera palabra es la acción, la segunda palabra es un plural del modelo y la última palabra es la característica que se crea dentro del proyecto. Esto significa que escribirá create_books_table
cuando cree una migración para un modelo de libro.
Este código crea un archivo llamado yyyy_mm_dd_hhmmss_create_comments_table dentro de la base de datos/carpeta de migraciones .
A continuación, edite la función up dentro de yyyy_mm_dd_hhmmss_create_comments_table :
public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->longText('body'); $table->boolean('approved'); $table->integer('likes')->default(0); $table->timestamps(); }); }
Este código crea un esquema que crea una tabla con las columnas: id
, name
, email
, body
, approved
, likes
y timestamps
.
Ejecutar las Migraciones
Crear y editar el archivo de migraciones no hará nada hasta que los ejecute usando la línea de comandos. Si observa el administrador de la base de datos, todavía está vacío.
Ejecute las migraciones usando Artisan:
php artisan migrate
Este comando ejecuta todas las migraciones dentro de la base de datos/migraciones porque es la primera migración desde que se creó la aplicación:
La siguiente imagen muestra todos los archivos de migración que ejecutó. Cada uno representa una tabla en la base de datos:
Crear el archivo CommentFactory
Cree un archivo de fábrica que contenga su función de definición. Para esta demostración, creará una fábrica usando Artisan:
php artisan make:factory CommentFactory.php
Este código crea un archivo .php de CommentFactory dentro de la carpeta de base de datos/fábricas .
La función de definición
La función dentro de CommentFactory define cómo Faker genera datos falsos. Edítalo para que se vea así:
public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->email(), 'body' => $this->faker->sentence(45), 'approved' => $this->faker->boolean(), 'likes' => $this->faker->randomNumber(5) ]; }
Este código le dice a Faker que genere lo siguiente:
- Un nombre
- Una dirección de correo electrónico
- Un párrafo que contiene 45 oraciones.
- Un valor aprobado que solo puede ser verdadero o falso
- Un número aleatorio entre 0 y 9999
Conecte el modelo de comentario a CommentFactory
Vincule el modelo Comment
a CommentFactory
declarando una variable $model
protegida arriba de la definición:
protected $model = Comment::class;
Además, agregue el use App\Models\Comment;
a las dependencias del archivo. El archivo CommentFactory ahora debería verse así:
Cómo sembrar la base de datos
Sembrar en programación significa generar datos falsos aleatorios para una base de datos con fines de prueba.
Ahora que creó el modelo, ejecutó migraciones y creó la definición dentro de CommentFactory, ejecute el sembrador usando el archivo DatabaseSeeder .
Crear el archivo CommentSeeder
Cree un archivo seeder que use factory para generar los datos:
php artisan make:seeder CommentSeeder.php
Este código crea un archivo .php de CommentSeeder dentro de la carpeta base de datos/sembradores .
Editar la función de ejecución
Conecte el modelo Comment al CommentSeeder. Agregue el siguiente código dentro de la función de ejecución:
Comment::factory()->count(50)->create();
Este código le dice a CommentSeeder que use el modelo de comentarios y la función de definición de CommentFactory para generar 50 comentarios dentro de la base de datos. Además, agregue el use App\Models\Comment;
a las dependencias del archivo. El archivo CommentSeeder ahora debería verse así:
Nota: Puede configurar Faker para crear datos locales. Por ejemplo, puede configurarlo para generar nombres italianos en lugar de nombres aleatorios configurando faker_locale
dentro del archivo app/config.php en it_IT
. Puede leer más sobre Faker Locales en esta guía.
Ejecutar la sembradora
A continuación, ejecute el archivo seeder con Artisan:
php artisan db:seed --class=CommentSeeder
Este código ejecuta el archivo seeder y genera 50 filas de datos falsos en la base de datos.
La base de datos ahora debería tener 50 filas de datos falsos que puede usar para probar las funciones de su aplicación:
Cómo restablecer la base de datos
Cuando utilice los datos generados para realizar pruebas, restablezca la base de datos cada vez que ejecute una prueba. Suponga que desea probar la función de cambio de comentarios aprobados. Actualice la base de datos después de cada prueba para asegurarse de que los datos generados anteriormente no interfieran con futuras pruebas.
Usar Actualizar base de datos
Actualice la base de datos utilizando el rasgo RefreshDatabase
dentro del archivo de prueba .
Vaya a ExampleTest.php dentro de la carpeta tests/Feature hasta el comentario use Illuminate\Foundation\Testing\RefreshDatabase;
y agregue la siguiente línea de código sobre la función test_the_application_returns_a_successful_response
:
use RefreshDatabase;
El archivo ExampleTest.php ahora debería verse así:
Ejecutar la prueba
Después de agregar el rasgo RefreshDatabase
al archivo de prueba, ejecute la prueba usando Artisan:
php artisan test
Este código ejecuta todas las pruebas en la aplicación y actualiza la base de datos después de las pruebas, como se muestra en la imagen a continuación:
Ahora, revisa la base de datos para ver la tabla de comentarios vacía:
Resumen
Este artículo cubrió cómo crear un proyecto Laravel, conectarlo a una base de datos y crear y configurar modelos, migración, fábrica y archivos seeder para generar datos aleatorios para la base de datos. También discutió cómo restablecer la base de datos después de ejecutar las pruebas.
Ahora ha visto cómo Laravel Factories y Faker facilitan la generación de cualquier cantidad de datos de prueba en minutos para probar una aplicación o incluso como marcador de posición, con una configuración mínima.
Cuando su aplicación Laravel esté lista para implementarse, puede hacerlo en los servicios de alojamiento de aplicaciones de Kinsta de manera rápida y eficiente.