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

Метод make

Метод make класса Factory применяется для создания экземпляров моделей с заполненными атрибутами, определёнными в фабрике, но без сохранения их в базу данных. Этот метод полезен для тестирования, когда необходимо создать объект модели для проверки логики, но не требуется его физическое присутствие в базе данных. Первым параметром можно передать массив переопределяющих атрибутов, вторым параметром - количество создаваемых экземпляров.

Синтаксис

<?php Model::factory()->make($attributes = [], $count = null); ?>

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_user_creation_without_saving() { $user = User::factory()->make(); $this->assertInstanceOf(User::class, $user); $this->assertNotNull($user->name); $this->assertNotNull($user->email); } } ?>

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_user_with_overridden_attributes() { $user = User::factory()->make([ 'name' => 'John Doe', 'email' => 'john@example.com' ]); echo $user->name; echo $user->email; } } ?>

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

"John Doe" "john@example.com"

Пример

Давайте создадим несколько моделей без сохранения в базу данных:

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_multiple_users_creation() { $users = User::factory()->count(3)->make(); echo count($users); } } ?>

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

"3"

Пример

Давайте используем метод make в сочетании с состоянием фабрики для создания пользователя-администратора:

<?php namespace Database\Factories; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; class UserFactory extends Factory { protected $model = User::class; public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->unique()->safeEmail(), 'is_admin' => false, ]; } public function admin() { return $this->state(function (array $attributes) { return [ 'is_admin' => true, ]; }); } } ?>
<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_admin_user_creation() { $admin = User::factory()->admin()->make(); echo $admin->is_admin; } } ?>

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

"1"

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

  • метод create,
    который создаёт и сохраняет модели в базу данных
  • метод raw,
    который возвращает массив атрибутов без создания модели
  • метод state,
    который определяет состояние для фабрики
  • метод count,
    который определяет количество создаваемых моделей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить