Testar é essencial para o desenvolvimento web. O Model Factories do Laravel definem registros do banco de dados de maneira previsível e facilmente replicável, para que os testes do seu aplicativo sejam consistentes e controlados. O Model Factories definem um conjunto de atributos padrão para cada um dos seus modelos Eloquent.
Por exemplo, se você estiver criando um aplicativo de blog que permita que autores e moderadores aprovem comentários antes que eles sejam publicados, precisará testar se a função funciona corretamente antes de implantá-la para os usuários. Tudo isso requer dados de teste.
Para testar o aplicativo de blog descrito acima, você precisa de dados de comentários para imitar e testar a funcionalidade do seu aplicativo. O Laravel permite que você faça isso sem obter comentários de usuários reais, usando o Model Factories e o Faker para gerar dados falsos.
Este artigo explica como obter dados de comentários sem comentários de usuários reais.
Pré-requisitos
Para concluir este tutorial, você deve estar familiarizado com o seguinte:
- XAMPP
- Composer
O XAMPP é uma distribuição gratuita e fácil de instalar do Apache que contém PHP, Perl e MariaDB, um banco de dados MySQL. Este tutorial usa a versão mais recente, 8.1.10, que instala o PHP 8.1.10. Leia este artigo se você estiver instalando o XAMPP para MacOS ou este guia para Linux. Este tutorial usa o XAMPP no Windows.
O Composer é uma ferramenta que permite que você defina, instale e baixe os pacotes dos quais seu aplicativo web depende no desenvolvimento e na produção. Este tutorial usa a versão v2.4.4 do Composer, que requer a versão 7.2+ do PHP. No tutorial, utilizaremos o Composer para instalar o instalador do Laravel.
Você também pode fazer o download do código completo do projeto para acompanhá-lo.
Como configurar o projeto
Nesta seção, você criará um projeto Laravel e o conectará a um banco de dados. Vamos dar uma olhada em tudo o que isso implica e em como fazer isso.
Instalando o instalador do Laravel
Para criar um projeto Laravel rapidamente, você deve instalar o instalador do Laravel:
composer global require laravel/installer
Este código instala o instalador do Laravel globalmente em seu computador.
Criando um projeto do Laravel
Em seguida, crie um projeto Laravel executando o seguinte:
laravel new app-name
Esse código inicializa um novo projeto Laravel e instala todas as dependências:
Outra maneira mais fácil de instalar o Laravel é usar o Composer diretamente.
composer create-project laravel/laravel app-name
Você não precisa instalar o instalador do Laravel ao usar o método acima.
Iniciando o aplicativo
Agora você pode alterar o diretório para app-name e iniciar o projeto usando a ferramenta de interface de linha de comando (CLI) do próprio Laravel, o Artisan:
php artisan serve
Esse código inicia o projeto e o conecta ao localhost:8000 ou a qualquer outra porta disponível se a porta 8000 estiver em uso. Em localhost:8000, você deverá ver algo como isso:
Criando um banco de dados
Para conectar seu aplicativo a um banco de dados, você deve criar um novo banco de dados usando a interface gráfica do usuário PHPMyAdmin do XAMPP. Acesse localhost/phpmyadmin e clique em New na barra lateral:
A imagem acima mostra o formulário Create Database com app_name como o nome do banco de dados.
Clique em Create para criar um banco de dados.
Editando o arquivo .env
Para conectar seu aplicativo a um banco de dados, você deve editar a parte DB do arquivo .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=app_name
DB_USERNAME=root
DB_PASSWORD=
Esse código preenche as credenciais do banco de dados com o nome do banco de dados, o nome de usuário, a porta, a senha e o host. Agora você está pronto para começar a criar o Model Factories.
Observação: substitua os valores pelas credenciais do banco de dados que você possui. Além disso, se você encontrar o erro “Access denied for user”, coloque os valores DB_USERNAME
e DB_PASSWORD
entre aspas duplas.
Como gerar dados falsos
Após criar o aplicativo e conectá-lo ao banco de dados, agora você pode criar os arquivos necessários para gerar dados falsos no banco de dados.
Criando o modelo de comentário
Crie o arquivo de modelo para interagir com as tabelas do banco de dados. Para criar um modelo, use o Artisan:
php artisan make:model Comment
Esse código cria um arquivo Comment.php dentro da pasta app/Models com algum código padrão. Adicione o seguinte código abaixo da linha use HasFactory;
:
protected $fillable = [
'name',
'email',
'body',
'approved',
'likes'
];
Esse código lista os campos que você deseja permitir atribuições em massa porque o Laravel protege seu banco de dados contra atribuições em massa por padrão. Agora, o arquivo de modelo do Comment deve ter a seguinte aparência:
Criando o arquivo de migração
Após criar o arquivo de modelo e declarar a array $fillable
, você deve criar o arquivo de migração usando o comando abaixo:
php artisan make:migration create_comments_table
Observação: A convenção de nomenclatura para a criação de migrações no Laravel geralmente é snake_case
também conhecido como underscore_case
. A primeira palavra é a ação, a segunda palavra é um plural do modelo e a última palavra é o recurso criado dentro do projeto. Isso significa que você escreverá create_books_table
ao criar uma migração para um modelo de livro.
Esse código cria um arquivo chamado yyyy_mm_dd_hhmmss_create_comments_table dentro da pasta database/migrations.
Em seguida, edite a função 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();
});
}
Esse código cria um esquema que cria uma tabela com as colunas: id
, name
, email
, body
, approved
, likes
, e timestamps
.
Executando as migrações
Criar e editar o arquivo de migrações não fará nada até que você as execute usando a linha de comando. Se você observar o gerenciador de banco de dados, ele ainda estará vazio.
Execute as migrações usando o Artisan:
php artisan migrate
Esse comando executa todas as migrações dentro de database/migrations porque é a primeira migração desde a criação do aplicativo:
A imagem a seguir mostra todos os arquivos de migração que você executou. Cada um representa uma tabela no banco de dados:
Criando o arquivo CommentFactory
Crie um arquivo de fábrica que contenha sua função de definição. Para esta demonstração, você criará uma fábrica usando o Artisan:
php artisan make:factory CommentFactory.php
Esse código cria um arquivo CommentFactory.php dentro da pasta database/factories.
A função de definição
A função dentro de CommentFactory define como o Faker gera dados falsos. Edite para que fique assim:
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)
];
}
Esse código diz ao Faker para gerar o seguinte:
- Um nome
- Um endereço de e-mail
- Um parágrafo que contém 45 frases
- Um valor aprovado que só pode ser verdadeiro ou falso
- Um número aleatório entre 0 e 9999
Conectando o modelo de comentário ao CommentFactory
Vincule o modelo Comment
a CommentFactory
declarando uma variável protegida $model
acima da definição:
protected $model = Comment::class;
Além disso, adicione o use AppModelsComment;
às dependências do arquivo. Agora, o arquivo CommentFactory deve ter a seguinte aparência:
Como usar o Seeder no banco de sados
Seeding em programação significa gerar dados falsos aleatórios para um banco de dados para fins de teste.
Agora que você criou o modelo, executou migrações e criou a definição dentro do CommentFactory, execute o seeder usando o arquivo DatabaseSeeder.
Criando o arquivo CommentSeeder
Crie um arquivo seeder que use o factory para gerar os dados:
php artisan make:seeder CommentSeeder.php
Esse código cria um arquivo CommentSeeder.php dentro da pasta database/seeders.
Editando a função Run
Conecte o modelo Comment ao CommentSeeder. Adicione o seguinte código dentro da função de execução:
Comment::factory()->count(50)->create();
Esse código diz ao CommentSeeder para usar o modelo Comment e a função de definição do CommentFactory para gerar 50 comentários dentro do banco de dados. Além disso, adicione o endereço use AppModelsComment;
às dependências do arquivo. Agora, o arquivo do CommentSeeder deve ter a seguinte aparência:
Observação: Você pode configurar o Faker para criar dados locais. Por exemplo, você pode configurá-lo para gerar nomes italianos em vez de nomes aleatórios, definindo faker_locale
dentro do arquivo app/config.php como it_IT
. Você pode ler mais sobre o Faker Locales neste guia.
Executando o seeder
Em seguida, execute o arquivo seeder com o Artisan:
php artisan db:seed --class=CommentSeeder
Esse código executa o arquivo seeder e gera 50 linhas de dados falsos no banco de dados.
O banco de dados agora deve ter 50 linhas de dados falsos que você pode usar para testar as funções do seu aplicativo:
Como redefinir o banco de dados
Ao usar os dados gerados para testes, redefina o banco de dados sempre que você executar um teste. Suponha que você queira testar o recurso de alternância de comentários aprovados. Atualize o banco de dados após cada teste para garantir que os dados gerados anteriormente não interfiram em testes futuros.
Use RefreshDatabase
Atualize o banco de dados usando a característica RefreshDatabase
dentro do arquivo de teste.
Navegue até ExampleTest.php dentro da pasta tests/Feature até o comentário use IlluminateFoundationTestingRefreshDatabase;
e adicione a seguinte linha de código acima da função test_the_application_returns_a_successful_response
:
use RefreshDatabase;
Agora, o arquivo ExampleTest.php deve ter a seguinte aparência:
Executando o teste
Depois de adicionar a característica RefreshDatabase
ao arquivo de teste, execute o teste usando o Artisan:
php artisan test
Esse código executa todos os testes no aplicativo e atualiza o banco de dados após os testes, conforme mostrado na imagem abaixo:
Agora, verifique o banco de dados para ver a tabela de comentários vazia:
Resumo
Este artigo abordou como criar um projeto Laravel, conectá-lo a um banco de dados e criar e configurar modelos, migração, factory e arquivos seeder para gerar dados aleatórios para o banco de dados. Também foi discutido como redefinir o banco de dados após a execução de testes.
Agora você viu como o Laravel Factories e o Faker facilitam a geração de qualquer quantidade de dados de teste em minutos para testar um aplicativo ou até mesmo como um espaço reservado – com configuração mínima.
Quando seu aplicativo Laravel estiver pronto para ser implantado, você pode fazer isso rapidamente e de forma eficiente nos serviços de Hospedagem de Aplicativos da Kinsta.
Deixe um comentário