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

Метод setUp

Метод setUp класса TestCase предназначен для подготовки окружения перед каждым тестом. Он выполняется автоматически перед запуском каждого тестового метода в классе. В этом методе можно инициализировать общие объекты, создавать тестовые данные, настраивать моки или подготавливать состояние приложения. Метод не принимает параметров и не возвращает значение.

Синтаксис

<?php protected function setUp(): void { parent::setUp(); // Подготовка данных } ?>

Пример

Давайте подготовим общие данные для тестирования работы с постами:

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\Post; use App\Models\User; class PostTest extends TestCase { protected $user; protected $post; protected function setUp(): void { parent::setUp(); $this->user = User::factory()->create([ 'name' => 'test_user' ]); $this->post = Post::factory()->create([ 'title' => 'test post', 'content' => 'test content', 'user_id' => $this->user->id ]); } public function test_post_belongs_to_user() { $res = $this->post->user->name; echo $res; } } ?>

Результат выполнения кода:

"test_user"

Пример

Метод setUp можно использовать для настройки аутентифицированного пользователя для всех тестов:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class AuthTest extends TestCase { protected $user; protected function setUp(): void { parent::setUp(); $this->user = User::factory()->create([ 'email' => 'test@example.com', 'password' => bcrypt('password') ]); } public function test_authenticated_user_can_access_dashboard() { $res = $this->actingAs($this->user) ->get('/dashboard') ->status(); echo $res; } } ?>

Результат выполнения кода:

"200"

Пример

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

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Post; use App\Models\User; class PostControllerTest extends TestCase { protected $user; protected $posts; protected function setUp(): void { parent::setUp(); $this->user = User::factory()->create(); $this->posts = Post::factory() ->count(5) ->create([ 'user_id' => $this->user->id ]); } public function test_user_has_five_posts() { $res = $this->user->posts->count(); echo $res; } } ?>

Результат выполнения кода:

"5"

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

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