Chaque fois que j'effectue le TDD d'un projet avec des outils de type XUnit, j'ai du mal à me mettre dans le bon sens. Je trouve que l'utilisation d'outils conçus pour le développement piloté par le comportement ou " Spécification par l'exemple " rend plus facile pour moi de faire le TDD correctement -- c'est-à-dire l'accent mis sur la conception, l'exposition de l'intention et l'utilisation de la technologie. la description du comportement dans des contextes spécifiques . Non de test.
Cela dit, j'aimerais vous présenter pecs dans la conversation. Extrait du fichier readme sur le site du projet.
pecs est une petite bibliothèque de développement orientée comportement pour PHP 5.3, à la RSpec ou JSpec.
Si vous avez utilisé JSpec ou mieux encore, Jasmine-BDD (pour JavaScript) le style pecs de description du comportement devrait être vraiment familier. Je trouve ce style idéal pour les spécifications au niveau des composants. Si vous cherchez un outil PHP pour les spécifications au niveau des fonctionnalités (histoires ou tests d'acceptation par les utilisateurs), pensez à Behat .
Pour en revenir à pecs, voici un exemple tiré du site du projet pecs :
describe("Bowling", function() {
it("should score 0 for a gutter game", function() {
$bowling = new Bowling();
for ($i=0; $i < 20; $i++) {
$bowling->hit(0);
}
expect($bowling->score)->to_equal(0);
});
});
Oui, c'est une spécification PHP. En regardant les sources de pecs, il semble que l'auteur ait réussi à faire cela en utilisant les nouvelles tendances de PHP 5.3+, les lambdas et les fermetures. Je suppose donc que cela signifie que vous ne pouvez pas utiliser pecs dans un projet basé sur PHP < 5.3 (juste pour info).
De plus, pecs n'est pas aussi mature que PHPUnit ou SimpleTest. Cependant, je pense que les partisans de BDD dans la communauté PHP devraient soutenir la croissance d'outils comme pecs qui encouragent la "spécification par l'exemple" ou BDD sans la confusion apportée par l'utilisation d'outils de test XUnit.
En ce moment, je travaille davantage en Python qu'en PHP. Cependant, la prochaine fois que j'entreprendrai un projet PHP, je serai extrêmement heureux de disposer d'un outil mature, soutenu par la communauté, comme pecs, pour élaborer les spécifications du logiciel.