Fábricas do Laravel: Criando dados de teste realistas com padrões de fábrica do Laravel
Fábricas de Laravel no AlexHost VPS: teste como um profissional
Por que as fábricas do Laravel na AlexHost? As fábricas do Laravel são o seu atalho para gerar dados de teste realistas, facilitando o desenvolvimento e o teste do seu aplicativo. Em conjunto com a hospedagem VPS da AlexHost – completacom acesso à raiz, velocidade SSD e segurança incrível – você tem o playground perfeito para criar e testar aplicativos Laravel. Este guia o orienta na criação e no uso de fábricas para obter dados de teste rapidamente, garantindo que seu aplicativo esteja pronto para a produção.
O que são fábricas no Laravel?
As fábricas no Laravel são classes que definem um plano para criar instâncias de modelo. Elas são particularmente úteis para gerar dados de teste falsos ou para alimentar bancos de dados com dados originais. Usando fábricas, você pode criar uma ou várias instâncias de seus modelos, cada uma com atributos exclusivos.
As fábricas usam o Faker, uma biblioteca PHP para gerar dados falsos, como nomes, endereços, e-mails e outros, para que os dados pareçam realistas.
Pré-requisitos
- Laravel 9 ou posterior.
- Conhecimento básico dos modelos Eloquent e da estrutura de banco de dados do Laravel.
- Conexão com um banco de dados configurado em seu arquivo .env.
Etapa 1: criar uma fábrica de modelos
No Laravel 8 e posterior, as fábricas são definidas como classes. Você pode criar uma nova fábrica usando o comando artisan:
Isso criará um novo arquivo de fábrica no diretório database/factories chamado UserFactory.php.
Etapa 2: Definir a fábrica
Abra o arquivo UserFactory.php localizado em database/factories:
'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('password'), // or Hash::make('password')
'remember_token' => Str::random(10),
];}}
Explicação
- $model: Indica para qual modelo do Eloquent essa fábrica se destina.
- definition(): Esse método retorna uma matriz de atributos que definem o modelo. Ele usa a instância do Faker ($this->faker) para gerar dados aleatórios para cada atributo.
- name: usa faker->name para gerar um nome realista.
- email: usa faker->unique()->safeEmail para gerar um endereço de e-mail exclusivo.
- password: define uma senha padrão usando a função bcrypt().
- remember_token: Gera uma string aleatória para o campo remember_token.
Essa definição de fábrica criará credenciais de usuário realistas com um e-mail exclusivo e nomes aleatórios.
Etapa 3: Use fábricas para criar instâncias de modelo
Você pode usar a fábrica para criar instâncias únicas ou múltiplas de um modelo. Aqui estão alguns exemplos:
3.1. Criação de um único usuário
Para criar uma única instância de um usuário em um teste ou semeador, use o método create:
$user = \App\Models\User::factory()->create();
Isso cria um usuário no banco de dados com os atributos definidos na fábrica.
3.2. Criar vários usuários
Para criar várias instâncias de usuários:
$users = \App\Models\User::factory()->count(10)->create();
Isso cria 10 registros de usuários no banco de dados.
3.3. Criar instância sem salvar (método Make)
Se você quiser criar uma instância sem salvá-la no banco de dados, use o método make:
$user = \App\Models\User::factory()->make();
Isso criará um objeto do modelo User sem salvá-lo no banco de dados.
Etapa 4: Personalizar os estados de fábrica
Os estados permitem definir diferentes versões da fábrica, o que pode ser útil para criar usuários com diferentes funções ou status.
4.1. Definir um estado
Você pode definir estados na classe de fábrica:
public function admin()
{
return $this->state(function (array $attributes) {
return [
'is_admin' => true,
];
});
}
Esse estado de administrador pode ser usado para criar usuários com o atributo is_admin definido como true.
4.2. Usando o estado
Para usar o estado de administrador ao criar usuários:
$adminUser = \App\Models\User::factory()->admin()->create();
Isso criará um usuário com o atributo is_admin definido como true.
Etapa 5: usar fábricas em testes
As fábricas são particularmente poderosas ao escrever testes. Elas permitem que você crie rapidamente dados de teste e se concentre na lógica que está testando.
5.1. Crie dados de teste em um caso de teste
Veja a seguir um exemplo de uso de uma fábrica em um teste:
public function test_users_can_be_created()
{
$user = \App\Models\User::factory()->create();$this->assertDatabaseHas('users', [
'email' => $user->email,
]);
}
Esse teste cria um usuário e, em seguida, verifica se ele existe na tabela de usuários com o e-mail especificado.
Etapa 6: preencher o banco de dados com fábricas
As fábricas também podem ser usadas nos semeadores de banco de dados para preencher as tabelas de dados de amostra.
6.1. Criação de um semeador
Crie um semeador usando o comando artisan:
Abra o arquivo UserSeeder.php em database/seeders e use a fábrica para gerar usuários:
}
}
Esse semeador criará 50 usuários usando a fábrica de usuários.
6.2. Iniciando o semeador
Inicie o semeador usando:
php artisan db:seed --class=UserSeeder
Esse comando preenche a tabela de usuários com 50 registros de usuários aleatórios.
Etapa 7: uso de conexões em fábricas
Se você tiver modelos com links, como User e Post, poderá criar fábricas que criam dados vinculados:
7.1. Definir conexões
Em PostFactory.php:
public function definition()
{
return [
'user_id' => \App\Models\User::factory(),
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
];
}
Essa definição garante que, quando uma postagem é criada, um usuário é gerado automaticamente usando a fábrica de usuários.
7.2. Criação de uma postagem com um usuário associado
$post = \App\Models\Post::factory()->create();
Isso criará um post com um usuário associado a ele.
Conclusão: Fábricas AlexHost = Nirvana de testes
As fábricas do Laravel tornam os dados de teste muito fáceis, e o VPS da AlexHost dá ao seu aplicativo Laravel a velocidade e o controle para brilhar. De usuários individuais a relacionamentos complexos, as fábricas simplificam os testes e a propagação. Implemente em seu VPS, execute php artisan db:seed e veja seu aplicativo ganhar vida. Precisa de ajuda? A AlexHost está com você – codifique, teste, conquiste!