Jak generować i wykorzystywać fałszywe rekordy za pomocą fabryk modeli Laravel

Opublikowany: 2023-04-28

Testowanie jest niezbędne do tworzenia stron internetowych. Fabryki modelu Laravel definiują rekordy bazy danych w przewidywalny i łatwy do replikacji sposób, dzięki czemu testy aplikacji są spójne i kontrolowane. Fabryki modeli definiują zestaw domyślnych atrybutów dla każdego modelu Eloquent.

Na przykład, jeśli tworzysz aplikację do blogowania umożliwiającą autorom i moderatorom zatwierdzanie komentarzy przed ich opublikowaniem, musisz przetestować, czy funkcja działa poprawnie przed wdrożeniem jej dla użytkowników. Wszystko to wymaga danych testowych.

Aby przetestować opisaną powyżej aplikację do blogowania, potrzebujesz danych komentarzy, aby naśladować i testować funkcjonalność aplikacji. Laravel pozwala to zrobić bez uzyskiwania komentarzy od rzeczywistych użytkowników, używając fabryk Laravel i Fakera do generowania fałszywych danych.

W tym artykule wyjaśniono, jak uzyskać dane komentarzy bez komentarzy prawdziwych użytkowników.

Wymagania wstępne

Aby ukończyć ten samouczek, musisz znać następujące elementy:

  • XAMPP
  • Kompozytor

XAMPP to bezpłatna i łatwa w instalacji dystrybucja Apache, która zawiera PHP, Perl i MariaDB — bazę danych MySQL. W tym samouczku używana jest najnowsza wersja, 8.1.10, która instaluje PHP 8.1.10. Przeczytaj ten artykuł, jeśli instalujesz XAMPP dla MacOS lub ten przewodnik dla Linuksa. Ten samouczek używa XAMPP w systemie Windows.

Composer to narzędzie, które pozwala definiować, instalować i pobierać pakiety, od których zależy Twoja aplikacja internetowa w fazie rozwoju i produkcji. W tym samouczku użyto wersji v2.4.4 programu Composer, która wymaga PHP w wersji 7.2+. W tym samouczku używasz programu Composer do zainstalowania instalatora Laravel.

Możesz także pobrać pełny kod projektu, aby śledzić go dalej.

Testowanie aplikacji nie powinno być późniejszą refleksją. Fabryki Laravel Model mogą pomóc! Oto jak ️ Kliknij, aby tweetować

Jak skonfigurować projekt

W tej sekcji utworzysz projekt Laravel i połączysz go z bazą danych. Rzućmy okiem na wszystko, co się z tym wiąże i jak to osiągnąć.

Zainstaluj instalator Laravela

Aby szybko stworzyć projekt Laravel, zainstaluj instalator Laravel:

 composer global require laravel/installer

Ten kod instaluje instalator Laravel globalnie na twoim komputerze.

Utwórz projekt Laravel

Następnie utwórz projekt Laravel, uruchamiając następujące polecenie:

 laravel new app-name

Ten kod ładuje nowy projekt Laravel i instaluje wszystkie zależności:

Tworzenie projektu Laravel
Tworzenie projektu Laravel

Innym łatwiejszym sposobem instalacji Laravel jest bezpośrednie użycie Composera.

 composer create-project laravel/laravel app-name

Nie musisz instalować instalatora Laravel, korzystając z powyższej metody.

Uruchom aplikację

Możesz teraz zmienić katalog na app-name i rozpocząć projekt za pomocą własnego narzędzia interfejsu wiersza poleceń (CLI) Laravela, Artisan:

 php artisan serve

Ten kod rozpoczyna projekt i łączy go z localhost:8000 lub dowolnym innym dostępnym portem, jeśli używany jest port 8000. Na localhost:8000 powinieneś zobaczyć coś takiego:

Strona główna serwisu Laravel
Laravel

Utwórz bazę danych

Aby połączyć swoją aplikację z bazą danych, musisz utworzyć nową bazę danych za pomocą graficznego interfejsu użytkownika PHPMyAdmin XAMPP. Przejdź do localhost/phpmyadmin i kliknij Nowy na pasku bocznym:

Formularz Utwórz bazę danych w PHPMyAdmin
Utwórz formularz bazy danych

Powyższy obraz przedstawia formularz Utwórz bazę danych z nazwa_aplikacji jako nazwa bazy danych.

Kliknij Utwórz , aby utworzyć bazę danych.

Edytuj plik .env

Aby połączyć aplikację z bazą danych, musisz edytować część DB pliku .env :

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=

Ten kod wypełnia poświadczenia bazy danych nazwą bazy danych, nazwą użytkownika, portem, hasłem i hostem. Możesz teraz rozpocząć tworzenie fabryk i modeli.

Uwaga: Zastąp wartości poświadczeniami bazy danych. Ponadto, jeśli napotkasz błąd „Odmowa dostępu dla użytkownika”, umieść wartości dla DB_USERNAME i DB_PASSWORD w podwójnych cudzysłowach.

Jak generować fałszywe dane

Po utworzeniu aplikacji i połączeniu jej z bazą danych możesz teraz utworzyć niezbędne pliki do generowania fałszywych danych w bazie danych.

Utwórz model komentarza

Utwórz plik modelu do interakcji z tabelami bazy danych. Aby stworzyć model, użyj Artisan:

 php artisan make:model Comment

Ten kod tworzy plik Comment.php w folderze app/Models z pewnym kodem wzorcowym. Dodaj następujący kod poniżej use HasFactory; linia:

 protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];

Ten kod zawiera listę pól, które chcesz zezwolić na masowe przypisania, ponieważ Laravel domyślnie chroni Twoją bazę danych przed masowymi przypisaniami. Plik modelu komentarza powinien teraz wyglądać tak:

Plik modelu komentarza
Plik modelu komentarza

Utwórz plik migracji

Po utworzeniu pliku modelu i zadeklarowaniu tablicy $fillable należy utworzyć plik migracji za pomocą poniższego polecenia:

 php artisan make:migration create_comments_table

Uwaga: Konwencja nazewnictwa do tworzenia migracji w Laravel to zwykle snake_case , znana również jako underscore_case . Pierwsze słowo to akcja, drugie słowo to liczba mnoga modelu, a ostatnie słowo to funkcja, która jest tworzona w projekcie. Oznacza to, że podczas tworzenia migracji dla modelu Book napiszesz create_books_table .

Ten kod tworzy plik o nazwie yyyy_mm_dd_hhmmss_create_comments_table w folderze database/migrations .

Następnie edytuj funkcję up wewnątrz yyyy_mm_dd_hhmmss_create_comments_table :

 public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->longText('body'); $table->boolean('approved'); $table->integer('likes')->default(0); $table->timestamps(); }); }

Ten kod tworzy schemat, który tworzy tabelę z kolumnami: id , name , email , body , approved , likes i timestamps .

Uruchom migracje

Tworzenie i edycja pliku migracji nic nie da, dopóki nie uruchomisz ich za pomocą wiersza poleceń. Jeśli spojrzysz na menedżera bazy danych, nadal jest pusty.

Uruchom migracje za pomocą Artisan:

 php artisan migrate

To polecenie uruchamia wszystkie migracje wewnątrz bazy danych/migracji, ponieważ jest to pierwsza migracja od czasu utworzenia aplikacji:

Udane migracje
Udane migracje

Poniższy obraz przedstawia wszystkie uruchomione pliki migracji. Każdy reprezentuje tabelę w bazie danych:

Baza danych po migracji
Baza danych po migracji

Utwórz plik CommentFactory

Utwórz plik fabryczny zawierający funkcję definicji. Na potrzeby tej demonstracji utworzysz fabrykę za pomocą Artisan:

 php artisan make:factory CommentFactory.php

Ten kod tworzy plik CommentFactory .php w folderze database/factories .

Funkcja definicji

Funkcja wewnątrz CommentFactory określa, w jaki sposób Faker generuje fałszywe dane. Edytuj go, aby wyglądał tak:

 public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->email(), 'body' => $this->faker->sentence(45), 'approved' => $this->faker->boolean(), 'likes' => $this->faker->randomNumber(5) ]; }

Ten kod każe Fakerowi wygenerować następujące informacje:

  • Imię
  • Adres e-mail
  • Akapit zawierający 45 zdań
  • Zatwierdzona wartość, która może być tylko prawdą lub fałszem
  • Losowa liczba z przedziału od 0 do 9999

Podłącz model komentarzy do CommentFactory

Połącz model Comment z CommentFactory , deklarując chronioną zmienną $model nad definicją:

 protected $model = Comment::class;

Dodaj także use App\Models\Comment; do zależności plików. Plik CommentFactory powinien teraz wyglądać tak:

Plik CommentFactory
Plik CommentFactory

Jak zainicjować bazę danych

Seeding w programowaniu oznacza generowanie losowych fałszywych danych dla bazy danych w celach testowych.

Po utworzeniu modelu, uruchomieniu migracji i utworzeniu definicji wewnątrz CommentFactory uruchom siewnik przy użyciu pliku DatabaseSeeder .

Utwórz plik CommentSeeder

Utwórz plik siewnika , który używa fabryki do generowania danych:

 php artisan make:seeder CommentSeeder.php

Ten kod tworzy plik CommentSeeder .php w folderze database/seeders .

Edytuj funkcję Run

Podłącz model Comment do CommentSeeder. Dodaj następujący kod wewnątrz funkcji run:

 Comment::factory()->count(50)->create();

Ten kod nakazuje CommentSeederowi użycie modelu Comment i funkcji definicji CommentFactory w celu wygenerowania 50 komentarzy w bazie danych. Dodaj także use App\Models\Comment; do zależności plików. Plik CommentSeeder powinien teraz wyglądać tak:

Plik CommentSeeder
Plik CommentSeeder

Uwaga: Fakera można skonfigurować do tworzenia danych lokalnych. Na przykład możesz ustawić generowanie włoskich nazw zamiast losowych nazw, ustawiając faker_locale w pliku app/config.php na it_IT . Możesz przeczytać więcej o Faker Locales w tym przewodniku.

Uruchom Siewnik

Następnie uruchom plik siewnika za pomocą Artisan:

 php artisan db:seed --class=CommentSeeder

Ten kod uruchamia plik seedera i generuje 50 wierszy fałszywych danych w bazie danych.

Zainicjowanie bazy danych powiodło się
Zainicjowanie bazy danych powiodło się

Baza danych powinna teraz zawierać 50 wierszy fałszywych danych, których możesz użyć do przetestowania funkcji aplikacji:

50 wierszy danych w bazie danych
50 wierszy danych w bazie danych

Jak zresetować bazę danych

Używając wygenerowanych danych do testowania, resetuj bazę danych za każdym razem, gdy uruchamiasz test. Załóżmy, że chcesz przetestować funkcję przełączania zatwierdzonych komentarzy. Odśwież bazę danych po każdym teście, aby upewnić się, że wcześniej wygenerowane dane nie będą kolidować z przyszłymi testami.

Użyj RefreshDatabase

Odśwież bazę danych przy użyciu cechy RefreshDatabase w pliku testowym .

Przejdź do ExampleTest.php w folderze testing/Feature , aby use Illuminate\Foundation\Testing\RefreshDatabase; i dodaj następujący wiersz kodu nad funkcją test_the_application_returns_a_successful_response :

 use RefreshDatabase;

Plik ExampleTest.php powinien teraz wyglądać tak:

Plik ExampleTest
PrzykładPlik testowy

Uruchom test

Po dodaniu cechy RefreshDatabase do pliku testowego uruchom test za pomocą Artisan:

 php artisan test

Ten kod uruchamia wszystkie testy w aplikacji i odświeża bazę danych po testach, jak pokazano na poniższym obrazku:

Udany test Rzemieślnika
Udany test Rzemieślnika

Teraz sprawdź bazę danych, aby zobaczyć pustą tabelę komentarzy:

Pusta baza komentarzy
Pusta baza komentarzy
Ręczne wprowadzanie danych to już przeszłość! Zautomatyzuj testowanie aplikacji dzięki Laravel Model Factory. Zacznij tutaj! Kliknij, aby tweetować

Streszczenie

W tym artykule opisano, jak utworzyć projekt Laravel, połączyć go z bazą danych oraz utworzyć i skonfigurować pliki modeli, migracji, fabryki i seedera w celu generowania losowych danych dla bazy danych. Omówiono również, jak zresetować bazę danych po uruchomieniu testów.

Widziałeś już, jak Laravel Factories i Faker ułatwiają generowanie dowolnej ilości danych testowych w ciągu kilku minut w celu przetestowania aplikacji lub nawet jako elementu zastępczego — przy minimalnej konfiguracji.

Gdy Twoja aplikacja Laravel jest gotowa do wdrożenia, możesz to zrobić szybko i wydajnie w usługach hostingu aplikacji Kinsta.