Pest est un Framework de Test PHP basé sur PHPUNIT. Il permet une écriture plus littérale et moins verbeux en plus de donner accès à divers fonctionnalités supplémentaires.
Je ne vais pas expliquer la syntax car elle est très simple. Au lieu d'écrire des function comme dans PHPUNIT, on utilise une fonction test()
ou it()
Installation
Rien de bien compliqué :
composer require pestphp/pest --dev --with-all-dependencies
php artisan pest:install
Et c'est tout. Maintenant vous pouvez écrire vos tests en PEST.
Helpers
Vous pouvez écrire des functions helpers dans Pest.php.
Par exemple :
Que l'on peut ensuite utiliser directement dans nos tests.
Extension IDE
Bien penser à prendre l'extension IDE pour vous faciliter la vie avec l'autocompletion. ❤️
(PHPStorm / VSCode)
https://pestphp.com/docs/ide-plugins
Faker
En installant l'extension faker,
composer require pestphp/pest-plugin-faker --dev
on peut avoir accès à faker très simplement, pratique quand on a besoin d'une donnée uniquement comme un email et pas tout un model (Factory).
Watch
J'ai été impressionné de voir la fonctionnalité de watch comme dans npm (npm run watch) sur Pest.
Pour ça il faut l'installer :
brew install fswatch //Sur mac avec Homestead
composer require pestphp/pest-plugin-watch --dev
pest --watch //Pour lancer le watch
Et voilà 🎊 On a Pest qui se relance tout seul comme un grand !
Datasets
Je ne vais pas vous expliquer comme ça fonctionne car la documentation est très claire, mais il faut savoir qu'il y a tout un système de gestion de dataset dans Pest.
On peut faire des Datasets dans des fichiers puis les appeler au besoin (pratique pour vos Services !)
Ou encore faire du inline suivant les situations (pour tester les Rules Laravel par exemple).
Conclusion
Je pense que Pest PHP est vraiment un Framework Test d'avenir. C'est beaucoup plus lisible à l'écriture tant dans le code que dans la console. On peut faire des extensions customs ... donc qui sait quelle suberbe extension on va avoir à l'avenir ? Je recommande grandement de le tester sur un nouveau projet, c'est pas compliqué du tout si on a fait du Phpunit avant.