Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-07-2009 15:13:29

podo
Membre
Date d'inscription: 29-06-2009
Messages: 18

[1.8][Test Unitaire]Simuler un bootstrap ??

Bonjour.

J'essaye d'utiliser les test unitaires avec PHPUnit et ZendFramework. Cependant lorsque je veut tester mon fichier avec la commande

>phpunit EntitesTest

Le message suivant apparait :

Code:

Fatal error: class 'Zend_Db_Table' not found in '.../entites.php' line 3.

Je vous joint les fichiers en question :

Mon fichier EntitesTest.php qui se situe dans MonApp/tests/application/models/

Code:

<?php

require_once 'PHPUnit/Framework/TestCase.php';
require '../../../application/models/DbTable/Entites.php';

class EntitesTest extends PHPUnit_Framework_TestCase
{
    
    private $_entite;
    
    public function setUp()
    {
        $this->_entite = new Model_DbTable_Entites();
    }
    
    public function tearDown()
    {
        /* Tear Down Routine */
    }    
    
    public function testConstructeur()
    {
        $this->assertTrue(isset($this->_entite));
        
    }
    
    public function testCrud()
    {
        $nb1 = $this->_entite->fetchAll()->count();
        $this->_entite->ajouterEntite('xxxx');
        $nb2 = $this->_entite->fetchAll()->count();
        $this->assertTrue($nb2-$nb1=1);
        $id = $this->_entite->fetchAll('select Id_Entite from entite where Nom_Entite = \'xxxx\'');
        $obj = $this->_entite->getEntite($id);
        $this->assertTrue($obj[Nom_Entite]='xxxx');
        if(($this->assertEqual($obj[Nom_Entite],'xxxx'))==true){
            $this->_entite->editerEntite($id,'yyyy');
            $obj = $this->_entite->getEntite($id);
            $this->assertEqual($obj[Nom_Entite],'yyyy');
            $this->_entite->supprimerEntite($id);
            $nb3 = $this->_entite->fetchAll()->count();
            $this->assertEqual($nb1,$nb3);
        }
    }
}

Mon models entites.php qui se situe dans MonApp/application/models/

Code:

<?php

class Model_DbTable_Entites extends Zend_Db_Table {
    
    protected $_name = 'entites';
        
    public function getEntite($id){
        $row = $this->fetchRow('Id_Entite = ' . (int)$id);
        if(!$row){
            throw new Exception("Ligne $id non trouvée");
        }
        return $row->toArray();
    }
    
    public function ajouterEntite($nom){
        $data = array('Nom_Entite' => $nom);
        $this->insert($data);
    }
    
    public function editerEntite($id, $nom){
        $data = array('Nom_Entite' => $nom);
        $this->update($data, 'Id_Entite = ' . (int)$id);
    }
    
    public function supprimerEntite($id){
        $this->delete('Id_Entite = ' . (int)$id);
    }    
    
}

Je me doute qu'il ne trouve pas ma classe. Mais je me demande surtout pourquoi etant donner qu'en temps normal grace a l'autolaider il la trouve normalement ??

Dernière modification par podo (20-07-2009 15:53:29)

Hors ligne

 

#2 17-07-2009 13:56:50

podo
Membre
Date d'inscription: 29-06-2009
Messages: 18

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Pas de reponse ? Personne n'a connue ce probleme??

Hors ligne

 

#3 17-07-2009 16:24:14

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

la partie "tests" devient un module, il faut que tu le précises dans ton bootstrap (cf les posts concernant le bootstrap des modules)


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#4 17-07-2009 16:37:53

podo
Membre
Date d'inscription: 29-06-2009
Messages: 18

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Mes modules sont dans "DocRoot/application/modules"
Donc le dossier Tests, qui lui est dans "DocRoot/" ne doit pas etre concidéré comme tel non?

Hors ligne

 

#5 17-07-2009 16:50:09

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Dans la doc officielle sur Zend_Test, ils n'utilisent pas de structure modulaire et placent le répertoire /application contenant les modeles, les vues et les controleurs au meme niveau que le répertoire /tests, c'est pour cela que je suggérais de considérer tests comme un module a part entière
Après je n'ai encore jamais utilisé les tests avec ZF, peut etre que d'autres seront plus en mesure que moi de t'aider


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#6 20-07-2009 11:02:30

podo
Membre
Date d'inscription: 29-06-2009
Messages: 18

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Donc mon probleme n'est toujours pas resolue, mais a avancer ceci dit...

Je sais qu'il peut etre resolu si j'arrive a simuler un bootstrap dans mes tests... Enfin un truc comme ca... Psk la c'est surtout qu'il manque l'autolaod et tout ce qui va avec qui me fait tout planter...

En effet avec de multiples 'require' j'arrive a faire fonctionner mes tests... Mais bon c'est pas très ergonomique :s

Hors ligne

 

#7 24-09-2009 10:02:47

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Je fais remonter ce post car je viens enfin de comprendre ton problème hmm

Je suis en effet en train de me consacrer aux tests et lorsque je lance "phpunit ControllerTest" dans ma console (sous Windows) il me dit qu'il ne trouve pas ma classe Zend_Test_PHPUnit_TestCaseController. Comme si mon include_path était ignoré totalement.

Je voudrais donc savoir si tu as résolu ton problème correctement (à savoir autrement qu'avec des require_once), ou si quelqu'un d'autre a des réponses ?

Pour info ma structure est :

Code:

application
--modules
--Bootstrap.php
library
public
tests
--Bootstrap.php
--ControllerTest

veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#8 20-10-2009 15:20:43

6ril
Nouveau membre
Date d'inscription: 20-10-2009
Messages: 1

Re: [1.8][Test Unitaire]Simuler un bootstrap ??

Salut smile

Tu peux toujours utiliser la fonction magique _autoload de php5 à la place de tes require_once  pour que ce soit un peu plus propre.

La doc : http://php.net/manual/fr/language.oop5.autoload.php

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