Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-08-2011 10:40:05

stephane.guedon
Nouveau membre
Lieu: Rennes
Date d'inscription: 27-06-2011
Messages: 4

Zend_Test_PHUnit_Controller_TestCase et les base de donénes de test

Bonjour à tous,

Je fais appel à vous pour accélérer ma recherche d'une solution : Je réalise des tests fonctionnels et unitaires.

Unitaires sur mes classes métiers (le model) avec Zend_Test_PHPUnit_DatabaseTestCase et cela fonctionne impec.

Fonctionnels sur mes contrôleurs et là, si j'arrive à intialiser une base de données de test, j'aimerai (même si cela n'est pas forcément très orthodoxe) vérifier (je sais cela fait un peu doublon) que telle action a bien entrainée la bonne modification des données en base (action faites en fait par le model et donc ce qui peut paraitre comme un doublon).

J'essaye de faire un assert Equals entre le dataset créer par une fixture en ficher xml (avec PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet) et la récupération du contenu de ma table avec un Dataset_querytable mais la structure des deux objets ne semble pas identique.

Auriez-vous une idée qui fonctionne ?

Fierfeu

Hors ligne

 

#2 05-08-2011 13:20:06

stephane.guedon
Nouveau membre
Lieu: Rennes
Date d'inscription: 27-06-2011
Messages: 4

Re: Zend_Test_PHUnit_Controller_TestCase et les base de donénes de test

Bon et bien comme j'ai fini par trouver la réponse, je vous la donne. Voici donc quelques exemples qui manques à la doc ZF :

Voila le code.

Code:

  [lang=php]    //Vérification de la présence de la saisie dans la base de donnée
      //récupération de la table produite par le test
      $joueur= new DbTables_Joueurs();
      $dbTable = new Zend_Test_PHPUnit_Db_DataSet_DbTable($joueur);
      //Vérification du nombre de ligne dans la table normalement 1
      $this->assertEquals(1, $dbTable->getRowCount(),"Il n'y a pas qu'une ligne dans la DB");
      //DataSet attendu
      $assertion = new PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet(__DIR__ . '\gameInscription.xml');
      //vérification de la concordence des contenus des tables
      $dbTable->assertEquals($assertion->getTable('bc_joueurs'),"Les contenus de tables ne coincide pas après test d'inscription au jeu");

Avec une table, PHPUnit_Extensions_Database_DataSet_TableFilter devrait permettre d’exclure des colonnes lors de l’assertion.

Là on compare 2 tables entièrement ! Pour comparer deux data set on peut faire :
     

Code:

[lang=php]$Querydataset = new Zend_Test_PHPUnit_Db_DataSet_QueryDataSet($this->connection);
      $Querydataset->addTable('bc_joueurs', 'SELECT * FROM bc_joueurs');
      $Querydataset->assertEquals($assertion);

Comme là on a des dataset on peut utiliser PHPUnit_Extensions_Database_DataSet_DataSetFilter pour ignorer une ou des collones lors de l’assertion.

J'espère que cela vous aidera ... merci le code source lisible !

Dernière modification par stephane.guedon (05-08-2011 13:22:26)

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