Функция fake
Функция fake предоставляет доступ к экземпляру генератора фейковых данных Faker. Она используется для создания реалистичных тестовых данных в сидерах, фабриках и тестах. Функция возвращает объект класса FakerGenerator, который предоставляет множество методов для генерации различных типов данных: имен, адресов, текстов, чисел, дат и других. В качестве необязательного параметра можно передать локализацию.
Синтаксис
<?php
fake($locale = null);
?>
Пример
Сгенерируем имя, фамилию и адрес электронной почты:
<?php
$firstName = fake()->firstName();
$lastName = fake()->lastName();
$email = fake()->email();
echo $firstName;
echo $lastName;
echo $email;
?>
Результат выполнения кода:
"John"
"Doe"
"john.doe@example.com"
Пример
Создадим фейковые данные для пользователя с использованием фабрики:
<?php
namespace DatabaseFactories;
use AppModelsUser;
use IlluminateDatabaseEloquentFactoriesFactory;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition()
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'password' => bcrypt('password'),
'created_at' => fake()->dateTimeBetween('-1 year', 'now'),
];
}
}
?>
После определения фабрики можно создавать пользователей:
<?php
namespace DatabaseSeeders;
use AppModelsUser;
use IlluminateDatabaseSeeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
User::factory()->count(5)->create();
$user = User::factory()->create([
'name' => 'Admin User',
'email' => 'admin@example.com',
]);
echo $user->name;
echo $user->email;
}
}
?>
Результат выполнения кода:
"Admin User"
"admin@example.com"
Пример
Используем функцию fake для генерации разнообразных типов данных в тестах:
<?php
namespace TestsUnit;
use AppModelsUser;
use TestsTestCase;
class UserTest extends TestCase
{
public function test_user_creation()
{
$userData = [
'name' => fake()->name(),
'email' => fake()->unique()->email(),
'age' => fake()->numberBetween(18, 80),
'bio' => fake()->paragraph(3),
'phone' => fake()->phoneNumber(),
'address' => fake()->address(),
'is_active' => fake()->boolean(),
'birthday' => fake()->date('Y-m-d', '2000-01-01'),
];
$user = User::create($userData);
$this->assertDatabaseHas('users', [
'email' => $userData['email'],
]);
echo $user->name;
}
}
?>
Результат выполнения кода:
"Jane Smith"
Пример
Используем локализацию для генерации данных на русском языке:
<?php
$ruFaker = fake('ru_RU');
$ruName = $ruFaker->name();
$ruCity = $ruFaker->city();
$ruText = $ruFaker->sentence(5);
echo $ruName;
echo $ruCity;
echo $ruText;
?>
Результат выполнения кода:
"Анна Иванова"
"Москва"
"Consectetur adipisicing elit sed do eiusmod tempor"
Пример
Создадим массив с фейковыми данными для постов блога:
<?php
$posts = [];
for ($i = 0; $i < 3; $i++) {
$posts[] = [
'title' => fake()->sentence(4),
'content' => fake()->paragraphs(2, true),
'author' => fake()->name(),
'views' => fake()->numberBetween(100, 1000),
'published_at' => fake()->dateTimeBetween('-1 month', 'now'),
];
}
foreach ($posts as $post) {
echo $post['title'];
}
?>
Результат выполнения кода:
"Lorem ipsum dolor sit amet"
"Consectetur adipiscing elit"
"Sed do eiusmod tempor incididunt"