NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Open source

Testing for Laravel

Inštalácia
composer require --dev roundly-consulting/testing-for-laravel
Vyžaduje: PHP ^8.4 · Laravel ^13.0

Prehľ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 kryptomien

Odoslaní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.