Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
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.
[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 :
[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
Pages: 1