Si vous avez déjà essayé de tester votre code PHP, vous le savez, ce n'est pas forcément évident. En effet, une fois qu'une classe ou une fonction est définie il n'est plus possible de la modifier. Cette particularité devient très rapidement problématique lorsque l'on essaie de tester un code qui fait référence à une classe ou une fonction externe et on est souvent ammené à modifier notre code juste pour le rendre "testable" (en utilisant de l'injection de dépendance à la moindre occasion).
Un autre problème vient des librairies de tests qui sont parfois complexe à utiliser et à mettre en place (PHPUnit je pense à toi :)). En comparaison sur Ruby avec Rspec les tests sont beaucoup plus naturels à écrire :
Kahlan s'inspire de cette vision et propose une alternative intéréssante en se concentrant avant tout sur la simplicité.
- La librairie est capable de modifier n'importe quel objet ou méthode (à la Ruby ou JavaScript) sans extensions PHP particulière. Ainsi, plus besoin d'avoir recours à l'injection de dépendance à tout bout de champs juste pour rendre le code "testable".
- La syntaxe
describe-itpermet d'avoir des tests qui sont plus naturels à écrire et qui reflètent les fonctionnalités que l'on teste.
Par exemple tester un code qui ressemble à ça devient un jeu d'enfant :
Ici le code n'est pas séparé et si on souhaite tester la méthode path() il faut être en mesure de controler le retour de la méthode file_get_contents() ce qui serait impossible par défaut avec PHPUnit et nous obligerait à repenser notre classe.
Le but ici est juste de vous présenter l'outil mais je vous invite vivement à l'essayer et à consulter la documentation pour en découvrir plus.