Testen ist ein wichtiger Teil der Softwareentwicklung, fühlt sich aber oft wie eine lästige Pflicht an. Glücklicherweise macht Laravel das Testen mit seinen integrierten Tools zum Kinderspiel und hilft Entwicklern dabei, sicherzustellen, dass ihre Anwendungen wie erwartet funktionieren, ohne endlose Stunden mit Debuggen zu verbringen. Unabhängig davon, ob Sie ein kleines Projekt oder eine große Anwendung erstellen, können Unit-Tests Ihnen potenzielle Kopfschmerzen ersparen, indem sie Probleme frühzeitig erkennen.
In diesem Blog befassen wir uns mit Unit-Tests in Laravel – was es ist, warum es wichtig ist und wie man mit dem Schreiben von Tests beginnt. Am Ende werden Sie anhand von Beispielen aus der Praxis verstehen, wie Sie Tests in Laravel erstellen und ausführen.
Unit-Tests ist eine Testart, bei der Sie Code schreiben, um einzelne Einheiten Ihrer Anwendung zu testen, wie Funktionen, Methoden oder Klassen. Diese Tests sind klein, schnell und konzentrieren sich darauf, sicherzustellen, dass ein bestimmter Codeabschnitt wie erwartet funktioniert.
In Laravel werden Unit-Tests normalerweise mit PHPUnit geschrieben, das mit Laravel vorinstalliert ist.
Unit-Tests mögen sich zunächst wie zusätzliche Arbeit anfühlen, aber die Vorteile überwiegen bei weitem den anfänglichen Aufwand. Deshalb ist es Ihre Zeit wert:
Laravel ist für Unit-Tests vorkonfiguriert, sodass Sie keine zusätzlichen Tools installieren müssen. So fangen Sie an:
Laravel enthält PHPUnit standardmäßig. Sie können die Version überprüfen, indem Sie Folgendes ausführen:
vendor/bin/phpunit --version
Laravel bietet einen praktischen Artisan-Befehl zum Generieren einer neuen Testklasse:
php artisan make:test ExampleTest --unit
Dadurch wird eine Testdatei im Verzeichnis „tests/Unit“ erstellt:
vendor/bin/phpunit --version
Laravel verwendet zum Testen die Datei .env.testing. Kopieren Sie Ihre .env-Datei und benennen Sie sie in .env.testing um. Aktualisieren Sie die Datenbankkonfiguration, um eine separate Testdatenbank zu verwenden, um sicherzustellen, dass Ihre Tests keine Auswirkungen auf Ihre Entwicklungsdatenbank haben.
php artisan make:test ExampleTest --unit
Lassen Sie uns einen einfachen Test schreiben, um zu überprüfen, ob eine Methode in einer Klasse den erwarteten Wert zurückgibt.
Erstellen Sie eine Hilfsklasse in app/Helpers/MathHelper.php:
tests/ ├── Unit/ │ └── ExampleTest.php
Schreiben Sie einen Test für diese Funktion in Tests/Unit/MathHelperTest.php:
DB_CONNECTION=sqlite DB_DATABASE=:memory:
Führen Sie den Test durch:
namespace App\Helpers; class MathHelper { public static function add($a, $b) { return $a + $b; } }
Wenn alles korrekt ist, gibt PHPUnit Folgendes aus:
namespace Tests\Unit; use PHPUnit\Framework\TestCase; use App\Helpers\MathHelper; class MathHelperTest extends TestCase { public function testAddition() { $result = MathHelper::add(2, 3); $this->assertEquals(5, $result); } }
Modelle sind für jede Laravel-Anwendung von zentraler Bedeutung. Testen wir eine einfache Modellmethode.
Fügen Sie ein Benutzermodell mit einer benutzerdefinierten Methode in app/Models/User.php hinzu:
vendor/bin/phpunit
Schreiben Sie einen Test in tests/Unit/UserTest.php:
OK (1 test, 1 assertion)
Für Controller verwenden Sie normalerweise Funktionstests, Sie können aber trotzdem einzelne Methoden testen.
Erstellen Sie einen Dienst in app/Services/ExampleService.php:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class User extends Model { use HasFactory; public function isAdmin() { return $this->role === 'admin'; } }
Schreiben Sie einen Test dafür:
namespace Tests\Unit; use PHPUnit\Framework\TestCase; use App\Models\User; class UserTest extends TestCase { public function testIsAdmin() { $user = new User(); $user->role = 'admin'; $this->assertTrue($user->isAdmin()); } }
So führen Sie alle Tests in Ihrem Projekt aus:
namespace App\Services; class ExampleService { public function greet($name) { return "Hello, $name!"; } }
So führen Sie eine bestimmte Testdatei aus:
namespace Tests\Unit; use PHPUnit\Framework\TestCase; use App\Services\ExampleService; class ExampleServiceTest extends TestCase { public function testGreeting() { $service = new ExampleService(); $this->assertEquals('Hello, John!', $service->greet('John')); } }
Die Ausgabe zeigt:
Unit-Tests in Laravel müssen nicht einschüchternd sein. Mit seinen integrierten Tools und der nahtlosen Integration mit PHPUnit erleichtert Laravel das Schreiben und Verwalten von Tests. Durch die Übernahme einer „Testing First“-Denkweise stellen Sie sicher, dass Ihre Anwendung robust, zuverlässig und produktionsbereit ist.
Fangen Sie klein an – schreiben Sie einen Test für eine einzelne Funktion oder Klasse. Wenn Sie sich vertraut machen, werden Sie sehen, wie Unit-Tests Ihren Entwicklungsprozess verändern können. Viel Spaß beim Codieren!
Das obige ist der detaillierte Inhalt vonUnit-Tests in Laravel: Ein praktischer Ansatz für Entwickler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!