


Ich habe schließlich Pest für PHP und Laravel ausprobiert und dann den Wechsel vorgenommen
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!

ThebestApproachForSendingemailsinphpisusinusThephpmailerlibraryDuetoitSRective, merkeurichness, Anneaseofuse.phpmailersupportsSmtp, bietet DETAILEDErRORHANDLY, erlaubt, dass

Der Grund für die Verwendung der Abhängigkeitsinjektion (DI) ist, dass sie lose Kopplung, Testbarkeit und Wartbarkeit des Codes fördert. 1) Verwenden Sie den Konstruktor, um Abhängigkeiten zu injizieren.

PhpperformancetuningiscrucialBecauseitenhancesspeedandeffizienz, die sichvitalforewebapplications.1) CachingwithapcureducesDatabaseloadandimprovesresponSetimes.2 optimierenDatabasequeriesbyselekting -Antriebsanbietung und -Insusingsusing -INDUBUTUBUTUBEXINGEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEEDEPEDEPEED.

TheBestPracticesForSendingemailsSecurelyInphpinclude: 1) usingSecureConfigurations withSmtpandStartTlsenScryption, 2) Validating und SanitIningInputStopreventInjection -Tacks -3) -Decryption -sensistataWithins -SussionSmingSmSslsl, 4), 4), 4), 4), 4)

Tooptimizephpapplicationsforperformance, Usecaching, Datenbankoptimierung, Opcodecaching und ServerConfiguration.1) ImplementcachingwithapcutoredatafetTimes.2) optimiertatabasesbyindexing, BalancingReadand und 3) enableopcachetoavoidrocompilecompil

AbhängigkeitsinjektionInphpisadelPatternThatenhancesFlexibilität, Testbarkeit und MaschinenbarkeitbyprovidexternaldePendenclasses.itallowsforlocoppling, EaserTesting Throughmocking und Modulardesign, ButrequiresfulstructionoVoidover-In-Inje-Inje-Inje

Die PHP -Leistungsoptimierung kann in den folgenden Schritten erreicht werden: 1) Verwenden Sie Request_once oder include_once oben im Skript, um die Anzahl der Dateilasten zu reduzieren. 2) Verwenden Sie Vorverarbeitungsanweisungen und Stapelverarbeitung, um die Anzahl der Datenbankabfragen zu verringern. 3) Opcache für Opcode -Cache konfigurieren; 4) Aktivieren und Konfigurieren von PHP-FPM-Optimierungsprozessmanagement; 5) Verwenden Sie CDN, um statische Ressourcen zu verteilen. 6) XDEBUG oder Blackfire für die Code -Leistungsanalyse verwenden. 7) Wählen Sie effiziente Datenstrukturen wie Arrays; 8) Schreiben Sie den modularen Code für die Optimierungsausführung.

OpcodecachingsidesignifictimProvePhpperformanceByCachingCompiledCode, reduziererverladung und responsetimes.1) itStoresCompiledPhpCodeInmemory, BypassingParsingandCompiling.2) useopcacheBysetingParameterphp.ini, LikeemoryConsumnitlimits


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

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

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

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

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen
