Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - tests unitaires

Fil des billets - Fil des commentaires

mardi, décembre 4 2012

FakeServerConf, une nouvelle lib pour vos tests PHP

Pour tester certains composants du framework Jelix, comme la partie "routage", j'ai besoin d'avoir des paramètres serveurs correctement définis, en particulier dans la variable globale $_SERVER. En effet, les tests étant lancés en ligne de commande avec PHPUnit, $_SERVER ne contient pas du tout la même chose que lorsque le script PHP est lancé par un serveur HTTP. Pire, pour une même URL, nous n'avons pas la même chose selon si PHP est lancé en CGI/FPM, ou si c'est le module PHP pour Apache qui est utilisé.

Bref, cela devient fastidieux dans un environnement de tests en ligne de commande de simuler un contexte HTTP.

C'est pourquoi j'ai crée cette petite bibliothèque, FakeServerConf. On lui indique le type de serveur que l'on veut simuler, et l'url que l'on demande (avec la méthode GET, POST, DELETE...), et FakeServerConf rempli correctement $_SERVER, $_GET et $_POST avec les bonnes valeurs. Vous n'avez plus qu'à tester vos classes qui utilisent ces variables. Et vous pouvez de plus tester avec les différents types de serveurs pris en charge par FakeServerConf. Pour l'instant il n'y a qu'Apache+mod_php et Apache +cgi ou fpm.

vendredi, mars 16 2012

Un serveur pour des tests ? Node.js bien sûr !

Pour une grosse extension pour Firefox (un projet client), j'ai réalisé entre autre chose un composant qui agit sur des pages web. Pour tester ce composant (avec des tests unitaires bien sûr !), j'avais besoin d'un serveur web servant des pages HTML statiques.

J'avais bien pensé à apache, mais ça m’embêtait de déployer toute une artillerie comme WAMP, surtout sur la machine de travail que l'on me prête, pas très performante (et sous windows mais bon, c'est une autre histoire... :-) ). Et puis ça m’embêtait de configurer un serveur web tout court. Donc exit aussi Nginx.

Bref, je voulais un truc très simple, très light. Je me suis alors tourné très vite vers node.js. Téléchargement, lancement de l'installateur, click, click, c'était installé.

J'ai choppé ensuite un script JS implémentant un serveur http de fichiers statiques, pour node.js, comme on en trouve par dizaine sur le web. Une ligne de commande plus tard, j'avais un serveur qui écoutait patiemment le port 8080.

En moins de 5 minutes, j'étais prêt à écrire mes tests. J'ai trouvé ça génial :-) Ça c'est de la productivité !

lundi, septembre 18 2006

Améliorations de simpletest

Je viens de commencer le développement d'une nouvelle version de Wikirenderer, afin de lever des limitations sur la syntaxe de blocs et de corriger des bugs. Il m'est nécessaire en fait de tout refondre.

Lire la suite...