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.

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

Plus d'informations sur les options de formatage

CAPTCHA
La vérification ne tient pas compte des minuscules ou des majuscules.
Image CAPTCHA
Enter the characters shown in the image.