РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1177 of 1392 menu

Класс WithFaker

Класс WithFaker используется в тестах Laravel для генерации фейковых данных с помощью библиотеки Faker. Он подключается как трейт к тестовому классу и предоставляет свойство $this->faker, которое позволяет создавать реалистичные тестовые данные. Это особенно полезно при написании тестов, где требуется большое количество разнообразных данных.

Синтаксис

<?php use Illuminate\Foundation\Testing\WithFaker; class ExampleTest extends TestCase { use WithFaker; public function test_example() { $name = $this->faker->name(); $email = $this->faker->unique()->safeEmail(); $text = $this->faker->text(200); } } ?>

Пример

Создадим тест для проверки создания пользователя с использованием фейковых данных:

<?php use App\Models\User; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class UserTest extends TestCase { use RefreshDatabase, WithFaker; public function test_user_creation() { $data = [ 'name' => $this->faker->name(), 'email' => $this->faker->unique()->safeEmail(), 'password' => 'password123', ]; $user = User::create($data); $this->assertDatabaseHas('users', [ 'email' => $data['email'] ]); } } ?>

Пример

Сгенерируем различные типы фейковых данных для тестирования модели Article:

<?php use App\Models\Article; use Illuminate\Foundation\Testing\WithFaker; class ArticleTest extends TestCase { use WithFaker; public function test_article_validation() { $article = Article::create([ 'title' => $this->faker->sentence(6), 'content' => $this->faker->paragraphs(3, true), 'slug' => $this->faker->slug(), 'views' => $this->faker->numberBetween(1, 1000), 'is_published' => $this->faker->boolean(80), 'published_at' => $this->faker->dateTimeBetween('-1 year', 'now'), ]); $this->assertModelExists($article); } } ?>

Пример

Используем фейковые данные в HTTP-тестах для проверки API-эндпоинтов:

<?php use App\Models\User; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class ApiTest extends TestCase { use RefreshDatabase, WithFaker; public function test_user_registration_api() { $userData = [ 'name' => $this->faker->name(), 'email' => $this->faker->unique()->safeEmail(), 'password' => 'password123', 'password_confirmation' => 'password123', ]; $response = $this->postJson('/api/register', $userData); $response->assertStatus(201) ->assertJsonPath('user.email', $userData['email']); } } ?>

Пример

Создадим несколько записей с помощью фабрики и фейковых данных:

<?php use App\Models\Post; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class PostTest extends TestCase { use RefreshDatabase, WithFaker; public function test_posts_list() { Post::factory() ->count(5) ->create([ 'title' => $this->faker->sentence(), 'content' => $this->faker->text(500), ]); $posts = Post::all(); $this->assertCount(5, $posts); foreach ($posts as $post) { $this->assertNotEmpty($post->title); $this->assertNotEmpty($post->content); } } } ?>

Смотрите также

  • класс TestCase,
    который является базовым для всех тестов
  • трейт RefreshDatabase,
    который сбрасывает базу данных между тестами
  • класс Factory,
    который создаёт фабрики для моделей
  • метод create,
    который создаёт записи с помощью фабрик
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить