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

Метод create

Метод create применяется к экземпляру фабрики в тестах Laravel и создаёт одну или несколько моделей, сохраняя их в базе данных. Первым параметром можно передать массив атрибутов для переопределения стандартных значений фабрики. Метод возвращает созданную модель или коллекцию моделей при использовании с count.

Синтаксис

<?php Factory::create($attributes = []); ?>

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\Article; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { use RefreshDatabase; public function test_create_article() { $article = Article::factory()->create(); $this->assertDatabaseHas('articles', [ 'id' => $article->id, ]); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\Article; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { use RefreshDatabase; public function test_create_article_with_custom_attributes() { $article = Article::factory()->create([ 'title' => 'Custom Title', 'status' => 'published', ]); $this->assertEquals('Custom Title', $article->title); $this->assertEquals('published', $article->status); } } ?>

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

"OK (1 test, 2 assertions)"

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\Article; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { use RefreshDatabase; public function test_create_multiple_articles() { $articles = Article::factory()->count(5)->create(); $this->assertCount(5, $articles); $this->assertDatabaseCount('articles', 5); } } ?>

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

"OK (1 test, 2 assertions)"

Пример

Давайте создадим модели с использованием связей через метод has:

<?php namespace Tests\Unit; use Tests\TestCase; use App\Models\Article; use App\Models\Comment; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { use RefreshDatabase; public function test_create_article_with_comments() { $article = Article::factory() ->has(Comment::factory()->count(3)) ->create(); $this->assertCount(3, $article->comments); $this->assertDatabaseCount('comments', 3); } } ?>

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

"OK (1 test, 2 assertions)"

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

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