Nous allons utiliser la librairie de tests PHP la plus utilisée à ce jour : PHPUnit.
Malheureusement, pour ma part, j'ai PHPUnit qui fonctionne sur mon poste de développement depuis longtemps, en fait depuis mes multiples tentatives de TDD. Du coup, je ne saurais plus trop vous orienter sur un step-by-step. Toutefois, vous trouverez la documentation nécessaire sur le site officiel de PHPUnit. De souvenir, il me semble qu'il n'y avait pas de piège à l'installation.
D'un autre côté, si vous installez le package Zend Framework Skeleton Application, il suffira d'installer (avec Composer) le package zend-test
composer require --dev zendframework/zend-test
Sur un projet Symfony, la librairie PHPUnit fait partie intégrante des dépendances du projet. (En principe), elle s'installe au moment où vous allez installer votre projet Symfony.
Pour lancer les premiers tests, un petit coup d'oeil sur la documentation officielle https://phpunit.de/manual/4.8/en/writing-tests-for-phpunit.html et un nombre non négligeable de posts sur Internet vous y aideront. En règle générale, il suffit de se rendre à la racine de votre projet (tip : au même niveau que votre fichier phpunit.xml.dist
et de lancer la commande
phpunit
Vous pouvez affiner l'exécution de vos tests avec des arguments dans la ligne de commande. Les différentes options sont documentées ici : https://phpunit.de/manual/current/en/textui.html
Le fichier
phpunit.xml.dist est le fichier de paramétrage de PHPUnit pour votre projet. S'il y a des paramétrages à faire, c'est dans ce fichier qu'il faut le faire. Voici la documentation : https://phpunit.de/manual/current/en/appendixes.configuration.html
Comme toutes les autres librairies de tests, PHPUnit est conçu avec tout un ensemble d'assertions qui vont nous aider à rédiger nos tests : https://phpunit.de/manual/current/en/appendixes.assertions.html. Vous pouvez jeter un rapide coup d'oeil sur la liste des assertions. Il y en a vraiment pour tous les goûts mais ce qu'on peut retenir :
Les assertions les plus utilisées seront très probablement : assertEquals
, assertFalse
, assertTrue
, assertInstanceOf
.
Mais vous pourrez les découvrir au fur et mesure. Par ex, je viens de découvrir qu'il existe assertCount
que je peux faire en utilisant assertEquals
au lieu d'assertCount
.
Il y a des assertions sur les contenus des tableaux et des chaînes de caractères, sur les format XML et Json, sur le système de fichier... Si vous avez besoin de faire des assertions un peu plus complexe, penchez vous tout particulièrement sur l'assertion assertThat
qui permet de faire des assertions conditionnelles. https://phpunit.de/manual/current/en/appendixes.assertions.html#appendi…. Nous aborderons probablement ce point si j'ai un exemple sous la main mais il est probable qu'on ait également la solution pour le faire autrement.