Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/09/2007, 17h07   #1
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Par défaut Zend Framework et PHPUnit comment l'utiliser ?

Bonjour,

Je vais me lancer dans le développement d'un projet assez conséquent et je vais donc implémenter des tests unitaires à l'aide de PHPUnit. Seulement je vois pas comment utiliser PHPUnit avec le Zend Framework! Car je ne sais pas comment tester mes actions, elles ne prennent pas de paramètres et pour instancier un contrôleur je n'y arrive pas vraiment étant donné que je dois passer des paramètres que je ne connais pas.

Est-ce que quelqu'un à déjà utiliser les deux ?

Merci.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 20h04   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
la dernière fois que j'ai utilisé PHPUnit j'ai seulement fais des tests sur les "objets métiers".
Normalement les contrôleurs doivent contenir des simples appels aux objets sans tests ou calculs compliqués

PS : je précise que je n'ai pas utilisé le Zend Framework, je parle dans le cas général d'un architecture MVC
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 21h01   #3
Membre régulier
 
Étudiant
Inscription : novembre 2005
Messages : 85
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2005
Messages : 85
Points : 81
Points : 81
hello,
http://framework.zend.com/manual/fr/requirements.html -> il y a déjà des test dans zf, donc regarde comment ceux-ci sont effectués ....

sinon j'ai trouver ceci : http://kayneteo.blogspot.com/2006/07...unit2-for.html

en espérant que cela t'aide
Grummfy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 14h58   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 41
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2007
Messages : 41
Points : 35
Points : 35
J'up le sujet pour savoir si quelqu'un utilise PHPUnit avec Zend Framework.

Personnellement, j'aimerais bien... J'ai essayé de faire le tuto ici: http://tulsaphp.net/node/40 mais ça ne fonctionne apparemment pas...
coolcoco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 11h06   #5
Rédacteur
 
Homme Jean-Pierre
Inscription : août 2005
Messages : 333
Détails du profil
Informations personnelles :
Nom : Homme Jean-Pierre
Âge : 26
Localisation : Suisse

Informations forums :
Inscription : août 2005
Messages : 333
Points : 442
Points : 442
Salut Yoteco,

Figure-toi que je suis sur le sujet depuis un bon bout de temps ...

...Au minimum, tu devrais tester les objets métiers (la partie "Modèle" du motif MVC).

Pour ma part je considère que même si les contrôleurs ne servent (en théorie) que de synchro entre les vues et les modèles, il faut les tester; y compris et surtout les annexes tels que les plugins ou les helpers.

Les dév de chez ZF on tout prévu pour ça, et j'en suis le premier ravi :

Par exemple ... pour simuler un dispatch, tu as toutes les classes à disposition : Request, Response, etc. Elles te permettent de créer un environnement d'exécution de toute pièce.

Exemple pour tester un plugin... :

Paramètrage du front controller

Code PHP :

$this->_front = Zend_Controller_Front::getInstance();

$this->_front->resetInstance();

$this->_front->setControllerDirectory(dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files');

$this->_front->setParam('noErrorHandler', true);

$this->_front->setParam('noViewRenderer', true);

$this->_front->returnResponse(true);

$this->_front->throwExceptions(false);

$this->_front->setModuleControllerDirectoryName('controllers');

$this->_front->addModuleDirectory(dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files\modules');

Zend_Controller_Action_HelperBroker::resetHelpers();



Création de l'objet Request dans ton test

Code php :


$request = new Zend_Controller_Request_Http('http://exemple/uri/');

// Zend_Controller_Response_Cli si tu utilises la console pour tes tests unitaires... $this->_front->registerPlugin(new TonPlugin ());

$response = $this->_front->dispatch($request, new Zend_Controller_Response_Cli());




... A partir de ça tu peux effectuer toutes sortes d'assertions, sur la requête, le dispatcher ou la réponse ... Tu peux vérifier qu'un contrôlleur ou une action a bien été dispatché, qu'une réponse contient une exception particulière, ou un code HTTP en particulier...

Bref tu peux tester tout ce qui tourne autour du flux d'exécution (Routing - Dispatching - Response).

Pour les vues parcontre, il faut plutôt faire des tests fonctionnels.

...

Pour implémenter des tests unitaires dans ZF, il faut être au clair avec les patterns MVC, Front Controller, Adapter, etc.

Il faut savoir rédiger des tests unitaires, sans tester ce qui l'est déjà, et surtout implémenter des tests de la bonne manière. A ce sujet, il y'a ce nouvel article, qui décrit bien les mauvaises pratiques en matière de tests...

Connaître le fonctionnement interne de ZF est un plus. Il faut scruter les fichiers sources, la documentation, et aussi les tests unitaires du framework qui sont une bonne source d'inspiration...
__________________
Mes articles DVP : http://jp-grossglauser.developpez.com
Guardian_7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 18h07   #6
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Merci beaucoup !!!!

Je commençais à déprimer car je ne trouvais pas le moyen d'implémenter mes tests!

Je vais essayer tout ça et vous faire un feedback.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 23h18   #7
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Je ne trouve pas comment passer des valeurs post au controller... si qqun sait.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 09h33   #8
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 41
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2007
Messages : 41
Points : 35
Points : 35
Citation:
Envoyé par Yoteco Voir le message
Je ne trouve pas comment passer des valeurs post au controller... si qqun sait.
Il y avait une "idée" pour cela dans le lien que j'ai mis à peine plus haut... A tester car je n'ai pas encore vraiment pu tout faire marché comme je voulais (surtout du à un manque cruel de temps )
coolcoco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2009, 19h35   #9
Invité de passage
 
Inscription : mai 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 1
Points : 1
Points : 1
Citation:
Envoyé par Yoteco Voir le message
Je ne trouve pas comment passer des valeurs post au controller... si qqun sait.

Salut !
A priori, avec Zend_Controller_Request_Http

cf. l'article d'Alex Netchakov sur le test MVC
Code :
1
2
3
4
5
6
7
function testMainUseCase() {
        // User opens http://localhost/main/user/register 
        $front = Zend_Controller_Front::getInstance();
        $request = new Zend_Controller_Request_Http('http://localhost/main/user/register');
        $response = new Zend_Controller_Response_Http();
        $front->returnResponse(true)->setRequest($request)->setResponse($response);
(...)
Guepi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h18.


 
 
 
 
Partenaires

Hébergement Web