Testen ist für die Webentwicklung unerlässlich. Laravel-Modellfabriken definieren Datenbankdatensätze auf vorhersehbare und leicht reproduzierbare Weise, damit deine App-Tests konsistent und kontrolliert sind. Modellfabriken definieren eine Reihe von Standardattributen für jedes deiner Eloquent-Modelle.
Wenn du zum Beispiel eine Blogging-App entwickelst, mit der Autoren und Moderatoren Kommentare genehmigen können, bevor sie online gehen, musst du testen, ob die Funktion richtig funktioniert, bevor du sie deinen Nutzern zur Verfügung stellst. All das erfordert Testdaten.
Um die oben beschriebene Blogging-App zu testen, brauchst du Kommentardaten, mit denen du die Funktionalität deiner Anwendung imitieren und testen kannst. Mit Laravel kannst du das tun, ohne Kommentare von echten Nutzern zu erhalten, indem du Laravel-Fabriken und Faker verwendest, um gefälschte Daten zu erzeugen.
In diesem Artikel wird erklärt, wie du Kommentardaten ohne Kommentare von echten Nutzern bekommst.
Voraussetzungen
Um dieses Lernprogramm zu absolvieren, musst du mit den folgenden Dingen vertraut sein:
- XAMPP
- Composer
XAMPP ist eine kostenlose und einfach zu installierende Apache-Distribution, die PHP, Perl und MariaDB – eine MySQL-Datenbank – enthält. In diesem Tutorial wird die neueste Version, 8.1.10, verwendet, die PHP 8.1.10 installiert. Lies diesen Artikel, wenn du XAMPP für MacOS installierst, oder diese Anleitung für Linux. In diesem Tutorial wird XAMPP unter Windows verwendet.
Der Composer ist ein Tool, mit dem du die Pakete definieren, installieren und herunterladen kannst, auf die deine Web-App in der Entwicklung und Produktion angewiesen ist. In diesem Lernprogramm wird die Version v2.4.4 des Composers verwendet, die PHP Version 7.2+ voraussetzt. Du verwendest Composer, um den Laravel-Installer für diesen Lehrgang zu installieren.
Du kannst auch den kompletten Code für das Projekt herunterladen, um mitzumachen.
Wie du das Projekt einrichtest
In diesem Abschnitt erstellst du ein Laravel-Projekt und verbindest es mit einer Datenbank. Schauen wir uns an, was das alles bedeutet und wie du es schaffst.
Laravel-Installer installieren
Um schnell ein Laravel-Projekt zu erstellen, installiere den Laravel-Installer:
composer global require laravel/installer
Dieser Code installiert den Laravel-Installer global auf deinem Rechner.
Ein Laravel-Projekt erstellen
Als Nächstes erstellst du ein Laravel-Projekt, indem du Folgendes ausführst:
laravel new app-name
Dieser Code bootet ein neues Laravel-Projekt und installiert alle Abhängigkeiten:
Eine andere, einfachere Möglichkeit, Laravel zu installieren, ist, Composer direkt zu verwenden.
composer create-project laravel/laravel app-name
Wenn du die obige Methode verwendest, brauchst du den Laravel-Installer nicht zu installieren.
Starte die App
Jetzt kannst du das Verzeichnis in app-name ändern und das Projekt mit Laravels eigenem Kommandozeilen-Tool (CLI) Artisan starten:
php artisan serve
Dieser Code startet das Projekt und verbindet es mit localhost:8000 oder einem anderen verfügbaren Port, wenn Port 8000 in Gebrauch ist. Auf localhost:8000 solltest du etwas wie das hier sehen:
Eine Datenbank erstellen
Um deine App mit einer Datenbank zu verbinden, musst du mit der grafischen Benutzeroberfläche PHPMyAdmin von XAMPP eine neue Datenbank erstellen. Gehe zu localhost/phpmyadmin und klicke in der Seitenleiste auf Neu:
Das Bild oben zeigt das Formular Datenbank erstellen mit app_name als Datenbankname.
Klicke auf Erstellen, um eine Datenbank zu erstellen.
Bearbeiten der .env-Datei
Um deine App mit einer Datenbank zu verbinden, musst du den DB-Teil der .env-Datei bearbeiten:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=app_name
DB_USERNAME=root
DB_PASSWORD=
Dieser Code füllt die Datenbankzugangsdaten mit deinem Datenbanknamen, Benutzernamen, Port, Passwort und Host. Jetzt kannst du damit beginnen, Fabriken und Modelle zu erstellen.
Hinweis: Ersetze die Werte durch deine Datenbankanmeldedaten. Wenn du die Fehlermeldung „Zugriff für Benutzer verweigert“ erhältst, setze die Werte für DB_USERNAME
und DB_PASSWORD
in Anführungszeichen.
So generierst du „gefälschte“ Daten
Nachdem du die App erstellt und mit der Datenbank verbunden hast, kannst du nun die notwendigen Dateien erstellen, um falsche Daten in der Datenbank zu erzeugen.
Erstelle das Kommentar-Modell
Erstelle die Modelldatei, die mit den Datenbanktabellen interagiert. Um ein Modell zu erstellen, verwende Artisan:
php artisan make:model Comment
Dieser Code erstellt eine Datei Comment.php im Ordner app/Models mit einigem Boilerplate-Code. Füge den folgenden Code unterhalb der Zeile use HasFactory;
ein:
protected $fillable = [
'name',
'email',
'body',
'approved',
'likes'
];
Dieser Code listet die Felder auf, die du für Massenzuweisungen zulassen willst, da Laravel deine Datenbank standardmäßig vor Massenzuweisungen schützt. Die Modelldatei Comment sollte nun wie folgt aussehen:
Erstellen der Migrationsdatei
Nachdem du die Modelldatei erstellt und das Array $fillable
deklariert hast, musst du die Migrationsdatei mit dem folgenden Befehl erstellen:
php artisan make:migration create_comments_table
Hinweis: Die Namenskonvention für die Erstellung von Migrationen in Laravel ist normalerweise snake_case
auch bekannt als underscore_case
. Das erste Wort ist die Aktion, das zweite Wort ist der Plural des Modells und das letzte Wort ist das Feature, das im Projekt erstellt wird. Das bedeutet, dass du create_books_table
schreibst, wenn du eine Migration für ein Buchmodell erstellst.
Dieser Code erstellt eine Datei namens yyyy_mm_dd_hhmmss_create_comments_table im Ordner database/migrations.
Als nächstes bearbeitest du die Funktion up in 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();
});
}
Dieser Code erstellt ein Schema, das eine Tabelle mit den Spalten erstellt: id
, name
, email
, body
, approved
, likes
, und timestamps
.
Ausführen der Migrationen
Das Erstellen und Bearbeiten der Migrationsdatei bewirkt erst dann etwas, wenn du sie über die Befehlszeile ausführst. Wenn du dir den Datenbankmanager ansiehst, ist er noch leer.
Führe die Migrationen mit Artisan aus:
php artisan migrate
Dieser Befehl führt alle Migrationen innerhalb von database/migrations aus, weil es die erste Migration seit der Erstellung der App ist:
Das folgende Bild zeigt alle Migrationsdateien, die du ausgeführt hast. Jede steht für eine Tabelle in der Datenbank:
Erstelle die CommentFactory-Datei
Erstelle eine Fabrikdatei, die deine Definitionsfunktion enthält. Für diese Demonstration erstellst du eine Factory mit Artisan:
php artisan make:factory CommentFactory.php
Dieser Code erstellt eine CommentFactory.php-Datei im Ordner database/factories.
Die Definitionsfunktion
Die Funktion in CommentFactory legt fest, wie Faker gefälschte Daten erzeugt. Bearbeite sie so, dass sie wie folgt aussieht:
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)
];
}
Dieser Code weist Faker an, Folgendes zu erzeugen:
- Einen Namen
- Eine E-Mail Adresse
- Einen Absatz, der 45 Sätze enthält
- Einen zugelassenen Wert, der nur wahr oder falsch sein kann
- Eine Zufallszahl zwischen 0 und 9999
Verbinden des Kommentar-Modells mit der CommentFactory
Verbinde das Modell Comment
mit CommentFactory
, indem du eine geschützte Variable $model
oberhalb der Definition deklarierst:
protected $model = Comment::class;
Füge außerdem die use AppModelsComment;
zu den Dateiabhängigkeiten hinzu. Die CommentFactory-Datei sollte nun wie folgt aussehen:
Wie wird die Datenbank gefüttert?
Seeding bedeutet in der Programmierung, dass man zu Testzwecken zufällige, gefälschte Daten für eine Datenbank erzeugt.
Nachdem du das Modell erstellt, die Migrationen ausgeführt und die Definition in der CommentFactory erstellt hast, kannst du den Seeder mithilfe der DatabaseSeeder-Datei ausführen.
Erstelle die CommentSeeder-Datei
Erstelle eine Seeder-Datei, die die Factory nutzt, um die Daten zu generieren:
php artisan make:seeder CommentSeeder.php
Dieser Code erstellt eine CommentSeeder.php-Datei im Ordner database/seeders.
Bearbeite die Run-Funktion
Verbinde das Kommentar-Modell mit dem CommentSeeder. Füge den folgenden Code in die Run-Funktion ein:
Comment::factory()->count(50)->create();
Dieser Code weist den CommentSeeder an, das Comment-Modell und die Definitionsfunktion der CommentFactory zu verwenden, um 50 Kommentare in der Datenbank zu erzeugen. Füge außerdem die use AppModelsComment;
zu den Dateiabhängigkeiten hinzu. Die CommentSeeder-Datei sollte nun wie folgt aussehen:
Hinweis: Du kannst Faker so konfigurieren, dass er lokale Daten erzeugt. Du kannst zum Beispiel einstellen, dass er italienische Namen anstelle von Zufallsnamen generiert, indem du faker_locale
in der Datei app/config.php auf it_IT
setzt. Mehr über Faker Locales erfährst du in diesem Leitfaden.
Ausführen des Seeders
Als Nächstes führst du die Seeder-Datei mit Artisan aus:
php artisan db:seed --class=CommentSeeder
Dieser Code führt die Seeder-Datei aus und generiert 50 Zeilen mit gefälschten Daten in der Datenbank.
Die Datenbank sollte jetzt 50 Zeilen mit gefälschten Daten enthalten, die du verwenden kannst, um die Funktionen deiner Anwendung zu testen:
So setzt du die Datenbank zurück
Wenn du die generierten Daten zum Testen verwendest, setze die Datenbank jedes Mal zurück, wenn du einen Test durchführst. Angenommen, du möchtest die Funktion zum Umschalten zwischen genehmigten Kommentaren testen. Aktualisiere die Datenbank nach jedem Test, um sicherzustellen, dass die zuvor generierten Daten zukünftige Tests nicht beeinträchtigen.
RefreshDatabase verwenden
Aktualisiere die Datenbank mit der Eigenschaft RefreshDatabase
in der Testdatei.
Navigiere in der Datei ExampleTest.php im Ordner tests/Feature zum Kommentar use IlluminateFoundationTestingRefreshDatabase;
und füge die folgende Codezeile oberhalb der Funktion test_the_application_returns_a_successful_response
ein:
use RefreshDatabase;
Die Datei ExampleTest.php sollte jetzt wie folgt aussehen:
Den Test ausführen
Nachdem du die Eigenschaft RefreshDatabase
zur Testdatei hinzugefügt hast, führe den Test mit Artisan aus:
php artisan test
Dieser Code führt alle Tests in der App aus und aktualisiert die Datenbank nach den Tests, wie in der folgenden Abbildung zu sehen ist:
Überprüfe nun die Datenbank, um die leere Kommentartabelle zu sehen:
Zusammenfassung
In diesem Artikel wurde beschrieben, wie man ein Laravel-Projekt erstellt, es mit einer Datenbank verbindet und Modelle, Migrations-, Factory- und Seeder-Dateien erstellt und konfiguriert, um Zufallsdaten für die Datenbank zu erzeugen. Außerdem wurde erläutert, wie man die Datenbank nach der Durchführung von Tests zurücksetzt.
Du hast jetzt gesehen, wie du mit Laravel Factories und Faker innerhalb von Minuten eine beliebige Menge an Testdaten erzeugen kannst, um eine Anwendung zu testen oder auch nur als Platzhalter – mit minimaler Konfiguration.
Wenn deine Laravel-Anwendung bereit ist, kannst du sie mit den Application Hosting Services von Kinsta schnell und effizient bereitstellen.
Schreibe einen Kommentar