Open source
Testing for Laravel
composer require --dev roundly-consulting/testing-for-laravelPrehľad
Testovacie nástroje pre Laravel balíky aj aplikácie, určené výhradne na vývoj a postavené tak, aby každá asercia vždy dokázala zlyhať. Obsahujú základný test case nad Testbench, ktorý dokáže medzi testami ponechať zmigrovanú schému, štrukturálnu kontrolu poradia migrácií, spúšťač migrácií na reálnej databáze s negatívnou kontrolou, obojsmerný konfiguračný kontrakt, bezpečné zachytenie príkazu about, dôkaz výmeny modelu, kontrolu kontraktu fasády, ktorá drží tajomstvá aj mimo stack trace, kontrolu názvov tried v payloadoch API, záznamníky zámkov, racer s druhou reláciou pre súbehy na reálnej databáze, sandbox publikovania, maticu databázových driverov a jedenásť architektonických presetov — každý vznikol po skutočnej chybe, ktorú nezachytil test neschopný zlyhať. Inštalujete ho cez composer require --dev: bez service providera, nič z neho nebeží v produkcii, licencia MIT a žiadne závislosti okrem oficiálnych komponentov Laravelu, Pestu a Testbench.
Čo získate
Kontrola poradia migrácií
Načíta cudzie kľúče zo zdrojového kódu migrácií a overí, že rodičovské tabuľky vznikajú skôr — zlyhá už na SQLite, nielen na Postgrese.
Spúšťač na reálnej databáze
Aplikuje migrácie na živom Postgrese či MySQL s negatívnou kontrolou, ktorá dokáže, že engine chybné poradie odmietne.
Migrácia raz na worker
Po zapnutí každý worker zmigruje schému raz a medzi testami len vyprázdni tabuľky a vráti počítadlá id — bez obaľujúcej transakcie a so zachytením zmenenej schémy.
Obojsmerný konfiguračný kontrakt
Každý čítaný kľúč je v konfigurácii a každý dodaný kľúč sa aj číta — zistené z tokenov PHP a Blade kódu, nikdy nie regexom.
Bezpečné zachytenie about
Skôr než overí, že neunikajú prístupové údaje, vyžaduje pozitívny dôkaz, že sa výstup about naozaj vykreslil.
Dôkaz výmeny modelu
Spustí reálny tok a overí konkrétnu triedu aj udalosti created každého modelu, ktorý má výmena vytvoriť.
Záznamník zámkov a matica driverov
Zviditeľní lockForUpdate() aj hĺbku transakcie na SQLite, druhou reláciou na reálnej databáze dokáže, že zámok drží, a spúšťa testy aj na reálnych databázových engine-och.
Kontrakt fasády a arch presety
Pripnite kontrakt fasáda → manažér → akcie — zdokumentovaný, s fake, s dosiahnuteľnou každou akciou a bez tajomstiev v stack trace — plus jedenásť Pest arch presetov.
Dokumentácia
Inštalácia
Inštalácia ako vývojová závislosť; Pest expectations sa zaregistrujú samy cez Pest plugin balíka.
Základný test case pre balíky
PackageTestCase: SQLite so zapnutými cudzími kľúčmi, migrácie podľa providera, výmena modelu pred bootom, reset bez down() a voliteľne ponechaná schéma.
Kontrola poradia migrácií
Načíta cudzie kľúče zo zdrojového kódu migrácií a overí, že rodičovská tabuľka vzniká skôr — štrukturálna kontrola, ktorá zlyhá aj na SQLite.
Migrácie na reálnej databáze
Aplikujte migrácie na živom Postgrese či MySQL a dokážte, že engine chybné poradie odmietne — bez enginu sa test viditeľne preskočí.
Migrácie len na publikovanie
Overte, že balík publikuje migrácie s časovou pečiatkou a zároveň ich automaticky nenačítava — chyba duplicitnej tabuľky ako test.
Sandbox publikovania
UsesPublishSandbox presunie config/, database/ a app/ do dočasného adresára pre každý test, takže testy publikovania nezapisujú do zdieľanej kostry.
Konfiguračný kontrakt
Overte obojsmerne, že konfigurácia obsahuje presne kľúče, ktoré kód číta — z PHP tokenov, s kontrolovanými výnimkami a režimom pre aplikácie.
Bezpečné zachytenie about
Zachyťte sekciu artisan about, dokážte, že sa vykreslila, a až potom overte, že neuniká žiadny prístupový údaj.
Dôkaz výmeny modelu
Spustite reálny tok a dokážte, že každý vytvorený model je podtrieda hostiteľa — podľa konkrétnej triedy a udalostí created, nie instanceof.
Žiadne názvy tried v API
toExposeNoClassNames() prečíta payload ako klient a zlyhá na akomkoľvek názve PHP triedy v ňom, pričom každý únik uvedie s cestou.
Kontrakt fasády
Pripnite kontrakt fasáda → manažér → akcie — zdokumentovaný koreň, skutočný fake, dosiahnuteľná každá akcia, skryté tajomstvá a modely cez fasádu.
Architektonické presety
Jedenásť jednoriadkových Pest arch presetov — strict types, final ako predvolba, seamy modelov aj factories, zákazy závislostí, modely cez fasádu a ďalšie.
Výnimky z presetov
Výnimky zadávajte cez kontrolovaný parameter $ignoring, nie cez ->ignoring() — a ako sa prefixové výnimky overia za vás.
Záznamník zámkov
Zviditeľnite lockForUpdate() a hĺbku transakcie na SQLite — cez trait modelu alebo zaznamenávajúcu gramatiku.
Súbehy na reálnej databáze
Racer vytvorí druhú databázovú reláciu vo forknutom procese, takže test uvidí, že zámok na Postgrese či MySQL naozaj drží, nielen že bol vyžiadaný.
Matica databázových driverov
Spúšťajte testy na SQLite, Postgrese či MySQL podľa premenných TESTING_DB_*, s izolovanými sondami a hotovou CI vetvou.
Použitie v aplikáciách
Tie isté asercie v bežnej Laravel aplikácii — bez balíka a bez zmeny základnej triedy — cez Pest alebo statické Assert.
Požiadavky
PHP 8.4+, Laravel 13 a Pest 5 s PHPUnit 13; Testbench 11 sa nainštaluje s ním. Inštalujte len do require-dev.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.