The 2008-05-09 at 14:32 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.
Ce matin, je vous donnais 8 astuces pour votre développement d’application web et cela en même temps me forçait à penser à un système robuste pour faire des tests unitaires dans une application développée avec Pluf. J’ai maintenant un bon mal de crâne, mais j’ai aussi implémenté un système basé sur SimpleTest. Lisez les commentaires de ma note de ce matin, vous verrez la coincidence… en effet l’auteur de SimpleTest est venu proposer d’utiliser SimpleTest…
Avec testrunner.php, vous pouvez lancer les tests de votre application.
$ php ./chemin/vers/testrunner.php VotreApp ./VotreApp/conf/votreapp.test.php
Cela va charger tous les tests disponibles dans le répertoire VotreApp/Tests ainsi qu’un niveau de sous-répertoires et les lancer.
Chaque fichier doit contenir une classe qui étant la classe UnitTestCase. Le nom de la classe doit suivre les conventions de Pluf, par exemple VotreApp_Tests_monTest pour une classe dans le fichier VotreApp/Tests/monTest.php.
Et voilà !
Maintenant, la vraie partie intéressante est la possibilité de tester vos vues sans avoir besoin d’un serveur web ! Pour cela, utilisez le client Pluf_Test_Client dans vos tests :
Pluf::loadFunction('Pluf_HTTP_URL_urlForView');
$url = Pluf_HTTP_URL_urlForView('VotreApp_Views::accueil');
$client = new Pluf_Test_Client(Pluf::f('votreapp_views'));
$reponse = $client->get($url, array('param_optionel' => 'toto'));
$this->assertEquals(200, $response->status_code);
print $response->content;
print_r($response->template);
L’objet $response vous donne accès au gabarit utilisé pour faire le rendu de la page. Il est disponible dans $response->template et le contexte associé est dans $response->template->context. Cela vous permet de regarder que le contexte a les bonnes valeurs.
Le client supporte les sessions. Donc si vous l’utilisez avec une méthode POST pour vous connecter, vous pouvez ensuite réutiliser ce client pour accéder une page qui demande d’être connecté, par exemple :
$client->post('/mapagedelogin/', array('login' => 'toto', 'password' => 'secret'));
$client->get('/mapageprivee/');
Bien entendu, c’est mieux d’utiliser Pluf_HTTP_URL_urlForView pour les URLs car cela évite de les coder en dur.
Bon, maintenant, il me reste à faire les choses suivantes :
Comments from readers