Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
09.10.2024

Dominar a geração de dados realistas em Laravel com Faker: Um guia abrangente

Faker é uma poderosa biblioteca PHP que gera dados falsos, mas realistas, para testar e semear bases de dados. No Laravel, o Faker está integrado nas fábricas de modelos Eloquent, facilitando a criação de modelos com dados aleatórios para fins de desenvolvimento, teste e propagação. Usando o Faker, você pode preencher seu banco de dados com nomes, endereços, e-mails e outros tipos de dados realistas, tornando seu ambiente de teste mais reflexivo das condições do mundo real. Este guia abrangente o guiará pelo básico do uso do Faker no Laravel e explorará técnicas avançadas para gerar uma variedade de dados para teste e propagação

Pré-requisitos

  • Laravel 8 ou mais recente instalado.
  • Conhecimento básico de modelos Eloquent e propagação de banco de dados.
  • Um banco de dados configurado em seu projeto Laravel.

O que é Faker?

Faker é uma biblioteca PHP para gerar dados falsos, como nomes, endereços, números de telefone e muito mais. O Faker fornece uma variedade de formatadores para gerar dados em diferentes idiomas e estilos, tornando-o adequado para testar aplicativos que exigem dados realistas

Integrando o Faker com o Laravel Factories

No Laravel, o Faker já está incluído e pode começar a utilizá-lo imediatamente através de fábricas de modelos. As fábricas definem como os modelos Eloquent devem ser criados, e o Faker ajuda a preencher esses modelos com dados aleatórios realistas

Criando uma fábrica

Para criar uma fábrica para um modelo, use o seguinte comando Artisan

php artisan make:factory UserFactory
#

Isso criará um arquivo chamado UserFactory.php dentro do diretório database/factories

Definindo uma fábrica com o Faker

Abra o arquivo UserFactory.php gerado

<?phpnamespace DatabaseFactories;
use AppModelsUser;
use IlluminateDatabaseEloquentFactoriesFactory;
use IlluminateSupportStr;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('password'), // Password can be hard-coded for testing.
'remember_token' => Str::random(10),
];
}
}

Neste exemplo:

$this->faker->name: Generates a random name.
$this->faker->unique()->safeEmail: Generates a unique, safe email address.
bcrypt('password'): Encrypts a hard-coded password.
Str::random(10): Generates a random string for the remember_token.

Usando o Faker em Laravel Seeders

Você pode usar factories e Faker em seus seeders de banco de dados para preencher tabelas com dados de teste. Isso é particularmente útil para ambientes de desenvolvimento onde você precisa de dados realistas para testes

Criando um semeador

Gere um novo semeador usando o Artisan

php artisan make:seeder UserSeeder

Abra o ficheiro UserSeeder.php gerado em database/seeders

<?php
namespace DatabaseSeeders;
use AppModelsUser;
use IlluminateDatabaseSeeder;
class UserSeeder extends Seeder
{
public function run()
{
// Create 50 users with random data
User::factory()->count(50)->create();
}
}

Neste exemplo, User::factory()->count(50)->create(); usa o UserFactory para criar 50 utilizadores aleatórios

Executando o semeador

Para executar o semeador e preencher a sua tabela de utilizadores com dados falsos, utilize o seguinte comando

php artisan db:seed --class=UserSeeder

Ou pode executar todos os semeadores

php artisan db:seed

Isto irá preencher a sua tabela de utilizadores com 50 registos de dados de utilizadores aleatórios, tornando mais fácil testar a sua aplicação com dados realistas

Técnicas avançadas de Faker

O Faker permite a geração de dados mais complexos para atender às necessidades específicas do seu ambiente de teste

1. Usando estados do Faker

Os estados permitem criar diferentes variações de um modelo. Por exemplo, você pode querer criar um usuário “admin” com atributos específicos.Em UserFactory.php

public function admin()
{
return $this->state(function (array $attributes) {
return [
'is_admin' => true,
];
});
}
#

Agora pode criar um utilizador administrativo como este

User::factory()->admin()->create();
2. Fornecedores Faker personalizados
É possível criar geradores de dados personalizados adicionando fornecedores personalizados ao Faker.

use FakerProviderBase as BaseProvider;
class CustomFakerProvider extends BaseProvider
{
public function customEmailDomain()
{
$domains = ['example.com', 'testsite.org', 'demo.net'];
return $this->generator->randomElement($domains);
}
}
#

Depois, na sua UserFactory

$this->faker->addProvider(new CustomFakerProvider($this->faker));

Agora pode utilizar o seu método personalizado

'email' => $this->faker->userName . '@' . $this->faker->customEmailDomain(),

3. Usando o Faker com relacionamentos

Se precisar de gerar modelos relacionados, pode fazê-lo nas suas fábricas. Por exemplo, se um Post pertence a um utilizador:Em PostFactory.php

public function definition()
{
return [
'user_id' => User::factory(),
'title' => $this->faker->sentence,
'body' => $this->faker->paragraph,
];
}
#

Isso garante que cada vez que um post é criado, um usuário será gerado e atribuído como seu proprietário

4. Locais da Faker para diferentes idiomas

A Faker suporta a geração de dados em diferentes idiomas, especificando uma localidade

$this->faker = FakerFactory::create('fr_FR'); // For French data

Isto irá gerar nomes, endereços e outros dados específicos para a localidade selecionada

Conclusão

Dominar o Faker no Laravel é uma maneira poderosa de gerar dados de teste realistas que espelham de perto o mundo real. Essa abordagem não apenas torna seus testes mais eficazes, mas também ajuda a detetar possíveis problemas antes que eles cheguem à produção, garantindo maior qualidade e confiabilidade do código. Ao utilizar o Faker juntamente com as fábricas de modelos do Laravel, pode criar facilmente conjuntos de dados dinâmicos, variados e significativos para as suas aplicações, tornando o seu ambiente de teste robusto e flexível.

O Faker permite simular praticamente qualquer tipo de dados, incluindo nomes, endereços, e-mails, números de telefone e até mesmo formatos personalizados. Esta versatilidade torna-o inestimável para testar funcionalidades como o registo de utilizadores, o checkout de comércio eletrónico ou sistemas de gestão de conteúdos sem depender de dados sensíveis do mundo real. Também simplifica o processo de propagação de bases de dados, poupando tempo significativo aos programadores durante os ciclos de desenvolvimento e de garantia de qualidade.

Por exemplo, utilizando o Faker numa fábrica Laravel, pode gerar vários utilizadores com detalhes realistas como este:

User::factory()->count(10)->create();

Isso criará 10 usuários com nomes, e-mails e outros atributos aleatórios, permitindo testar recursos como autenticação, notificações ou consultas específicas do usuário em um ambiente seguro e controlado. Ao dominar o Faker, os desenvolvedores podem criar aplicativos mais confiáveis e reduzir as chances de encontrar problemas inesperados na produção.

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills