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()
![pest php test it functions](https://ayso32m5n.cloudimg.io/v7/https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.22.58.png?width=570)
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 :
![pest php helpers](https://ayso32m5n.cloudimg.io/v7/https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.19.46.png?width=570)
Que l'on peut ensuite utiliser directement dans nos tests.
![pest php helpers](https://ayso32m5n.cloudimg.io/v7/https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.20.27.png?width=570)
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).
![Pest PHP faker](https://ayso32m5n.cloudimg.io/v7/https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.41.58.png?width=570)
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.
![pest php datasets shared data](https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.47.45.png)
On peut faire des Datasets dans des fichiers puis les appeler au besoin (pratique pour vos Services !)
![pest php datasets inline](https://web-id.fr/storage/articles%2FPest%2FCapture%20d%E2%80%99%C3%A9cran%202022-05-19%20%C3%A0%2016.48.56.png)
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.