Générer une classe test pour les modules: page d'affichage à partir de la base de données
Retour au menuChoix: 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);
}