Création d'une suite de tests

Ceci étant fait, on va créer notre suite de tests. Ajoutez un répertoire test à la racine de votre application et placez-y le code suivant.

/test/AllTests.php


<?php
// Important ! Affiche tous les messages d'erreurs
error_reporting(E_ALL);

// Installe le chargeur automatique de classes
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

// Charge la bibliothèque PHPUnit
require_once 'PHPUnit/Framework/TestSuite.php';

// Charge notre classe d'initialisation
require_once '../application/Initializer.php';

// Charge le test du contrôleur IndexController
require_once 'controllers/IndexControllerTest.php';

// Mise en place d'une suite de test
class AllTests extends PHPUnit_Framework_TestSuite 
{
  public function 
__construct() {
    
$this->setName('AllTests');        
    
$this->addTestSuite('IndexControllerTest');    

  }

  public static function 
suite() {
    return new 
self();
  }

?>

Ensuite, on crée un test pour notre contrôleur index et son action indexAction.

/test/controllers/IndexControllerTest.php


<?php
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

class 
IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase 
{
  protected function 
setUp() 
  {
    
// Code de mise en place
    
$this->bootstrap = array($this'appBootstrap');        
    
parent::setUp();    
  }
    
  protected function 
appBootstrap()
  {
    
$this->frontController->registerPlugin(new Initializer('test'));
  }

  protected function 
tearDown() 
  {
    
// Nettoyage
    
parent::tearDown();
  }        

  public function 
testIndexAction() 
  {
    
// Simule une requête vers la racine
    
$this->dispatch('/');
    
// On vérifie le code de réponse HTTP
    
$this->assertResponseCode(200'Code was ' $this->_response->getHttpResponseCode());
    
// Le nom du contrôleur est bien Index
    
$this->assertController('index''Controller was ' $this->_request->getControllerName());
    
// Le nom de l'action est bien Index
    
$this->assertAction('index''Action was ' $this->_request->getActionName());
    
// Teste le contenu de la réponse
    
$this->assertQueryContentContains('h4''Pierre QUIMOUSSE');
  }
}
?>
Vous devez toujours vous assurer avec la méthode assertController que le contrôleur est bien celui attendu, car en cas d'erreur c'est le contrôleur error qui va répondre.

Après plusieurs vérifications pour s'assurer que le routage est correct, le test vérifie qu'on a bien dans la sortie une balise h4 avec le texte Pierre QUIMOUSSE. Vous avez plein d'autres tests possibles, je vous renvoie pour cela à la documentation officielle.

Taxonomy upgrade extras:

Add new comment