


Ich habe Mitte 2015 angefangen, reines PHP zu lernen. Dann habe ich mich mit CodeIgniter 3 und Laravel 5.1 vertraut gemacht. Im Laufe der Jahre ist Laravel mein bevorzugtes Framework und ich bleibe immer noch dabei. Wie bei anderen beliebten PHP-Projekten halte ich PHPUnit für die einzige Wahl für Unit-Tests. Doch 2021 gab es eine kleine Veränderung, als Pest kam. Es wurde von Nuno Maduro erstellt – einem Ingenieur bei Laravel, der auch viele tolle Projekte/Pakete erstellt, die in der PHP- und Laravel-Community weit verbreitet sind.
Seit dem allerersten Tag von Pest habe ich mich nicht darum gekümmert, weil PHPUnit für mich ausreicht und ich mich faul fühle, dieses neue Testtool zu erlernen. Aber je mehr die Laravel-Community wächst, desto mehr Pest wird empfohlen. Viele Laravel-Projekte/-Pakete von Spatie, Livewire, Filament usw. verwenden Pest. Das Problem besteht also darin, dass ich beim Testen damit zusammenhängender Dinge auf PHPUnit portieren muss. Ich scheine keine Wahl zu haben. Es ist Zeit für mich, einen Blick auf Pest zu werfen.
Der erste Blick
Nach dem Installationsabschnitt erstelle ich mein erstes PHP-Projekt mit Pest.
mkdir ~/Herd/lerning-pest cd ~/Herd/learning-pest composer require pestphp/pest --dev --with-all-dependencies ./vendor/bin/pest --init
Die Verzeichnisstruktur ist fast die gleiche wie bei PHPUnit. Der Unterschied besteht darin, wie ein Test aussieht. Es ist abschlussbasiert statt klassenbasiert.
<?php // tests/Unit/ExampleTest.php test('example', function () { expect(true)->toBeTrue(); });
Ich kenne die Verwendung von Closure, mit der Methoden zur Laufzeit träge an ein Objekt angehängt werden können. Dies kann also in PHPUnit so umgeschrieben werden.
<?php // tests/Unit/ExampleTest.php class ExampleTest extends \PHPUnit\Framework\TestCase { public function test_example() { $this->assertTrue(true); } }
Es heißt, die Pest-Assertionssyntax sei von Rubys Rspec und Jest inspiriert, was ich nicht kenne. Daher interessiere ich mich auch nicht so sehr für sie. Für mich spielt es keine Rolle, wie die Assertionssyntax ist.
Mir gefällt einfach das Ergebnis, das beim Ausführen von Tests angezeigt wird. Es ist meiner Meinung nach viel hübscher und sauberer als PHPUnit.
Behauptungen
Dies sind Behauptungen, die ich in PHPUnit am häufigsten verwendet habe.
$this->assertSame($expected, $actual); $this->assertTrue($condition); $this->assertFalse($condition); $this->assertNull($actual); $this->assertEmpty($array); $this->assertCount($count, $countable); $this->assertInstanceof($type, $instance);
Sie können leicht in Pest umgeschrieben werden.
expect($actual)->toBe($expected); expect($condition)->toBeTrue(); expect($condition)->toBeFalse(); expect($actual)->toBeNull(); expect($actual)->toBeEmpty(); expect($actual)->toBeInstanceOf($type);
Wie ich bereits erwähnt habe, ist die Pest-Assertionssyntax in Ordnung, aber ich bleibe derzeit bei PHPUnit, weil ich keine neuen APIs studieren muss. Wie auch immer, ich bevorzuge PHPUnit-Behauptungen und verwende nur Dinge, die in Pest einzigartig sind. Architekturtests sind ein Beispiel. Meine Testdatei sieht so aus.
<?php test("all PHP files in LearningPest namespace must have strict mode enabled", function () { arch() ->expect('LearningPest') ->toUseStrictTypes(); }); test('all PHPUnit assertions are available for Pest', function () { $instance = new \stdClass(); $getInstance = function () use ($instance) { return $instance; }; $this->assertSame($instance, $getInstance()); $this->assertInstanceOf(stdClass::class, $instance); $this->assertTrue(1 assertFalse(1 > 2); $value = null; $this->assertNull($value); $this->assertEmpty([]); $array = [1, 2, 3]; $this->assertCount(3, $array); });
Pflichtfunktionen
Es gibt eine Reihe obligatorischer Funktionen, die es mir ermöglichen, in Pest identisch mit PHPUnit zu arbeiten. Hier sind sie:
- PHPUnit verfügt über einen Datenanbieter. Pest hat Datensätze.
- PHPUnit verfügt über setUp, TearDown, SetUpBeforeClass und TearDownAfterClass. Pest hat beforeEach, afterEach, beforeAll und afterAll.
- Beide verfügen über Ausnahmeprüfungen und können Tests überspringen/gruppieren/filtern.
Mockery ist eine eigenständige Bibliothek, daher liste ich sie hier nicht auf.
Auf der anderen Seite verfügt Pest über viele nützliche Dinge wie Architektur, Snapshot- oder Stresstests und Plugins. Ich werde sie entdecken, wenn ich Tests schreibe.
Abschluss
- Pest basiert auf PHPUnit, das in der PHP- und Laravel-Community in letzter Zeit weit verbreitet und empfohlen wird.
- Mit Pest kann ich fast auf die gleiche Weise wie zuvor arbeiten, aber mit schönerer CLI und hilfreicheren Funktionen.
- Pest ist jetzt das Standard-Testframework für meine PHP- und Laravel-Anwendungen.
Wenn Sie ein PHP-Entwickler sind, der Pest noch nicht verwendet hat, probieren Sie es aus.
Das obige ist der detaillierte Inhalt vonIch habe schließlich Pest für PHP und Laravel ausprobiert und dann den Wechsel vorgenommen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Alipay PHP ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor