Générer une classe test pour les modules: page d'affichage à partir de la base de données

Retour au menu

Choix: page affichage à partir de la base de données

Ce template permet de verifier une action du controller en lien avec la base de données.

A la génération, vous avez le code suivant:

  
   
public function test_list(){
  
       
//--Arrange
       /*
       //exemple:
       //  pour table author
       //  on a deux classes modeles model_exampleAuthor contenant des objets row_exampleAuthor

       //on cree un mock qui nous permettra de forcer le comportement, pour eviter d'interagir avec la base
       model_exampleAuthor::UTsetInstance('model_exampleAuthor',$this->getMock('model_exampleAuthor') );

       $tReturnExampleFindAll=array(
           44 => new row_exampleAuthor(
           array(
               //
               //
           )
           ),
           54 => new row_exampleAuthor(
           array(
               //
               //
           )
           )
       );
       model_exampleAuthor::getInstance()->method('exampleFindAll')->will($this->returnValue($tReturnExampleFindAll));
       */

       //tableau represenant les parametres url a simuler, par exemple array('id'=> 22)
       $tGet=array();
       _unitTest::getRequest()->setGet($tGet);

       $oModuleVille = new module_ville();
       $oModuleVille->before();

       //--Act
       $oModuleVille->_list();

       //--Assert
       /*
       //on imagine qu'on assigne a un moment notre tableau d'auteur a la vue
       //on recuperer la vue ajoute au layou a l'emplacement main

       $oViewMain=$oModuleVille->oLayout->UTgetView('main');

       //on verifie que la variable tArrayAuthor (assigne dans la vue )

       $tExpect=array(
           44 => null,
           54 => new row_exampleAuthor(
           array(
               //
               //
           )
           )
       );
       $this->assertEquals($tExpect,$oViewMain->tArrayAuthor);
       */


   }
    



L'idée est la suivante: on indique ce que nous retourne la base de données, puis on va vérifier ce qui est assigné à notre vue.

Par exemple, ici, on va capitaliser le nom des vues avant de l'assigner à la vue.

  
   
public function _list(){
      
       $tVille
=model_ville::getInstance()->findAll();
      
       
foreach($tVille as $oVille){
           $oVille->nom=strtoupper($oVille->nom);
       }
      
       $oView
=new _view('ville::list');
       $oView->tVille=$tVille;
      
      
       $this
->oLayout->add('main',$oView);
      
   
}
    



Ici, on testerait ainsi:

  
   
public function test_list(){
  
       
//--Arrange
       model_ville::UTsetInstance('model_ville',$this->getMock('model_ville') );

       $tFindAll=array(
           new row_ville(array(
               'id' => 45,
               'nom' => 'ville 45',
           )),
           new row_ville(array(
               'id' => 464,
               'nom' => 'ville 464',
           ))
       );
      
       model_ville
::getInstance()->method('findAll')->will($this->returnValue($tFindAll));
      
       
//tableau represenant les parametres url a simuler, par exemple array('id'=> 22)
       $tGet=array();
       _unitTest::getRequest()->setGet($tGet);

       $oModuleVille = new module_ville();
       $oModuleVille->before();

  
       
//--Act
       $oModuleVille->_list();


       //--Assert
       //dans notre code on assigne notre tableau de ville modifie a notre vue
       $oViewMain=$oModuleVille->oLayout->UTgetView('main');
      
       
//on recree ici notre tableau de donnees
       $tExpect=array(
           new row_ville(array(
               'id' => 45,
               'nom' => 'ville 45',
           )),
           new row_ville(array(
               'id' => 464,
               'nom' => 'ville 464',
           ))
       );
       //on modifie comme dans le code le champ nom en le mettant en majuscule
       $tExpect[0]->nom='VILLE 45';
       $tExpect[1]->nom='VILLE 464';
      
       
//on verifie que le tableau assigne a la vue est correcte
       $this->assertEquals($tExpect,$oViewMain->tVille);

   }