Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-10-2010 20:01:45

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

MVC - Doctrine - Tests unitaires

Bonjour à tous,

J'ai un début de projet utilisant à la fois la logique MVC du Zend Framework et l'ORM Doctrine.
Jusque là pas de problème - cela fonctionne même plutôt bien.

Le problème que je rencontre se trouve au niveau des tests unitaires (PHPUnit).

L'arborescence de mon projet actuel

monprojet
+ application
   + configs
   + controllers
   + forms
   + models
      + generated
          BaseUser.php
          ...
       User.php
       ...
    + scripts
    + views
+ library
+ public
+ tests
   + application
      + controllers
      + models
         UserTest.php
         ...
      + library
      + log
      phpunit.xml

Ma classe User se présente sous la forme :

class User extends BaseUser
{
    const ...
    ...

    public static function ...
    ...
}

Et BaseUser.php est donc une classe abstraite :

abstract class BaseUser extends Doctrine_Record
{
    public function setTableDefinition()
    {
         ...
     }
     ...
}

Le problème c'est que lorsque j'exécute les tests unitaires (fichier UserTest.php dans le répertoire correspondant), j'ai le message d'erreur suivant : "Fatal error: Class 'User' not found in D:\www\monprojet\tests\application\models\UserTest.php" sur la ligne "$u = new User();".

Je me suis dit, c'est normal, il ne connait pas la classe User (bien que Zend Studio soit en mesure de retrouver le fichier en question). J'ai donc rajouté un petit require_once pour corriger cela.

Le hic c'est que cela ne fonctionne toujours pas, l'erreur porte juste sur les autres fichiers maintenant, en l'occurence ici "BaseUser.php". Si je rajoute encore un require_once, c'est alors "Doctrine_Record" qui n'est pas connu, etc...

Comment réalisez-vous vos tests unitaires sur la partie "models" ?

J'ai suivi le tuto correspondant sur ZendCasts mais je n'ai rien de plus (ou de moins) au niveau de mes fichiers. Avez-vous une idée ?

Par avance merci. Bonne soirée.

Dernière modification par StefC30 (17-03-2013 19:44:24)

Hors ligne

 

#2 26-10-2010 04:27:55

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: MVC - Doctrine - Tests unitaires

Il faut que tu configure l'autoloader pour tes models dans le bootstrap de tes tests.

Hors ligne

 

#3 26-10-2010 07:57:26

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

Ok, mais est-ce le fichier "bootstrap.php" que l'on retrouve normalement dans "tests/applications" ou celui qui se trouve dans le répertoire "tests/library" (qui est vide actuellement) ?

A ce sujet, à quoi sert ce dernier ?

Dernière modification par StefC30 (17-03-2013 19:45:03)

Hors ligne

 

#4 26-10-2010 13:59:33

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: MVC - Doctrine - Tests unitaires

Comme c'est pour tester les composantes de ton application tu devrais utiliser celui qui se trouve dans le répertoire "tests/applications"

L'autre servirait à tester une bibliothèque maison.

Ce fichier sert à initialiser un environnement de test comme on le fait pour l'application.

Hors ligne

 

#5 26-10-2010 16:47:52

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

C'est logique, en effet.

Je vais quand même jeter un oeil sur le fichier "application.ini" et la section correspondante des sources du projet ZendCasts.
Il doit bien y avoir une différence avec mon projet, car mon bootstrap (sous "test/application") est identique mais cela ne fonctionne pas. yikes

En tous cas merci.

Dernière modification par StefC30 (17-03-2013 19:45:16)

Hors ligne

 

#6 26-10-2010 17:18:20

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

Pas mieux, mon "application.ini" est similaire.

J'ai même plus "d'autoload" que sur le projet "Unit Test Model" ZendCasts.

Etrange tout de même.

D'autres idées ?

Dernière modification par StefC30 (17-03-2013 19:45:31)

Hors ligne

 

#7 26-10-2010 18:18:19

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: MVC - Doctrine - Tests unitaires

Tes classes ne devrait pas être préfixé de Model ?

Code:

class Model_User extends Model_Generated_BaseUser //Suivant l'arborescence, mais vue que c'est doctrine j'suis pas certain
{

}

Comme tu n'utilises pas une architecture modulaire je ne suis plus certain si c'est comme ça!?

Hors ligne

 

#8 26-10-2010 20:28:48

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

Bonsoir 3uclide,

A priori ce n'est pas nécessaire.

Les noms correspondent à ceux indiqués dans un autre tuto concernant l'intégration de Doctrine 1.2 avec Zend Framework 1.10.

De plus, les classes sont automatiquement générées par Doctrine depuis la base de données et le fonctionnement de l'application est correct.

Seuls les tests unitaires me posent problème.

Dernière modification par StefC30 (17-03-2013 19:45:57)

Hors ligne

 

#9 26-10-2010 21:15:45

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

Quelques tentatives (modification du bootstrap des tests, du fichier de config...) plus tard, toujours pas de résultat. :-(

Je n'ai rien trouvé de particulier dans les tuto ZC 38 et suivants concernant Doctrine.

Le pire c'est que lorsque je lance les tests unitaires depuis Zend Studio en debug, aucun point d'arrêt n'a d'effet dans les différents fichiers "bootstrap.php". A croire qu'ils ne sont pas utilisés.

Quelqu'un a-t-il déjà rencontré un cas similaire ?

Dernière modification par StefC30 (17-03-2013 19:46:13)

Hors ligne

 

#10 12-11-2010 07:38:55

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

Bon, à priori personne ne fait de test unitaire pour la couche modèle ici.
Pas bien... :p

Je suis tout de même très étonné que les projets ZendCasts ne s’exécutent pas directement sous Zend Studio.

Si je n’effectue pas de modification dans le code proposé, le premier test échoue immédiatement car certaines classes ne sont pas connues. Je suis donc obligé de rajouter des "require_once" à tout va. Cela ne fait d'ailleurs que "déplacer" le problème jusqu'aux classes Doctrine.

Lorsque j’exécute le même test en mode debug, mon bootstrap n’est même pas utilisé. yikes

Quelqu'un aurait-il une idée ?

Dernière modification par StefC30 (17-03-2013 19:47:03)

Hors ligne

 

#11 16-11-2010 18:07:01

Saeba
Membre
Date d'inscription: 05-02-2008
Messages: 31

Re: MVC - Doctrine - Tests unitaires

Hello,
J'ai un peu le même souci avec PhpUnit et Zend Framework pour tester les modèles.

Mon arborescence :
application
-- models
---- + User.php

tests
-- application
---- models
------ + UserTest.php


Mon modèle User.php étends Zend_Db_Table

Code:

class Model_User extends Zend_Db_Table

Lorsque je lance phpunit, j'ai le message d'erreur :
PHP Fatal error:  Class 'Zend_Db_Table' not found in /var/www/myapp/application/models/User.php on line 6

Le problème est résolu si j'ajoute l'include de Zend/Db/Table.php en début de fichier, mais je ne pense pas que ça soit l'idéal.
Si quelqu'un a une solution je suis également preneur.

Merci,
Laurent

Hors ligne

 

#12 22-11-2010 11:11:38

StefC30
Membre
Date d'inscription: 28-03-2008
Messages: 35

Re: MVC - Doctrine - Tests unitaires

En effet Saeba, car on ne fait que déplacer le problème.

Je n'ai pas encore trouvé la solution. yikes

Ceci dit, voici tout de même un article intéressant au sujet des tests unitaires dans une application utilisant le Zend Framework : http://ajbrown.org/blog/2009/01/04/auto … art-1.html

Dernière modification par StefC30 (17-03-2013 19:47:53)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages