IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Zend Framework et PHPUnit comment l'utiliser ?


Sujet :

MVC PHP

  1. #1
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    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.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    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

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 87
    Points : 96
    Points
    96
    Par défaut
    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

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    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...

  5. #5
    Invité
    Invité(e)
    Par défaut
    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...

  6. #6
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    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.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  7. #7
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Je ne trouve pas comment passer des valeurs post au controller... si qqun sait.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    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 )

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    (...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment realiser une image de securite en zend framework 1.6
    Par Invité dans le forum Zend Framework
    Réponses: 2
    Dernier message: 29/09/2008, 11h46
  2. Zend Framework et mise en oeuvre de phpUnit
    Par Voodu dans le forum Zend Framework
    Réponses: 1
    Dernier message: 08/09/2008, 12h13
  3. Utiliser ses propres classes avec Zend Framework
    Par Adinsx dans le forum Zend Framework
    Réponses: 3
    Dernier message: 28/02/2008, 20h01
  4. Comment s'utilise l'ORM avec ce framework ?
    Par sir_gcc dans le forum Zend_Db
    Réponses: 13
    Dernier message: 20/01/2008, 13h03
  5. Utilisation de Zend Framework
    Par Nessma dans le forum Zend Framework
    Réponses: 11
    Dernier message: 08/01/2008, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo