Question

Quelqu'un a-t-il déjà réussi à configurer Zend_Test? Quelle était votre méthode / approche et comment exécutez-vous vos tests / suites de tests?

J'ai déjà PHPUnit installé et fonctionne. Maintenant, j'essaie d'écrire quelques tests de contrôleur simples. La documentation de Zend Framework suppose que le chargement automatique est configuré, ce que je n'ai pas encore fait. Quelle méthode utilisez-vous pour charger automatiquement les fichiers appropriés? Je le fais dans mon fichier d’amorçage normal, mais je ne veux pas encombrer mon test avec un tas d’inclusions et d’établissements. Une classe de cas de tests de contrôleurs abstraits serait-elle la solution?

Qu'en est-il du plug-in d'amorçage utilisé dans la documentation ... amorcez-vous vos tests ou aimez-vous le faire d'une autre manière? Je voudrais réutiliser autant que possible le fichier de bootstrap habituel. Comment dois-je sécher mon boot pour des tests et une utilisation normale?

Voici mon test jusqu'à présent:

<?php

class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
    public function setUp()
    {
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
        $this->frontController->registerPlugin(new Bootstrapper('testing'));
    }

    public function testIndexAction()
    {
        $this->dispatch('/index');
            $this->assertController('index');
            $this->assertAction('index');
    }

}

//straight from the documentation
class Bootstrapper extends Zend_Controller_Plugin_Abstract
{
    /**
     * @var Zend_Config
     */
    protected static 

Quelqu'un a-t-il déjà réussi à configurer Zend_Test? Quelle était votre méthode / approche et comment exécutez-vous vos tests / suites de tests?

J'ai déjà PHPUnit installé et fonctionne. Maintenant, j'essaie d'écrire quelques tests de contrôleur simples. La documentation de Zend Framework suppose que le chargement automatique est configuré, ce que je n'ai pas encore fait. Quelle méthode utilisez-vous pour charger automatiquement les fichiers appropriés? Je le fais dans mon fichier d’amorçage normal, mais je ne veux pas encombrer mon test avec un tas d’inclusions et d’établissements. Une classe de cas de tests de contrôleurs abstraits serait-elle la solution?

Qu'en est-il du plug-in d'amorçage utilisé dans la documentation ... amorcez-vous vos tests ou aimez-vous le faire d'une autre manière? Je voudrais réutiliser autant que possible le fichier de bootstrap habituel. Comment dois-je sécher mon boot pour des tests et une utilisation normale?

Voici mon test jusqu'à présent:

<*>

Que dois-je faire?

config; /** * @var string Current environment */ protected

Quelqu'un a-t-il déjà réussi à configurer Zend_Test? Quelle était votre méthode / approche et comment exécutez-vous vos tests / suites de tests?

J'ai déjà PHPUnit installé et fonctionne. Maintenant, j'essaie d'écrire quelques tests de contrôleur simples. La documentation de Zend Framework suppose que le chargement automatique est configuré, ce que je n'ai pas encore fait. Quelle méthode utilisez-vous pour charger automatiquement les fichiers appropriés? Je le fais dans mon fichier d’amorçage normal, mais je ne veux pas encombrer mon test avec un tas d’inclusions et d’établissements. Une classe de cas de tests de contrôleurs abstraits serait-elle la solution?

Qu'en est-il du plug-in d'amorçage utilisé dans la documentation ... amorcez-vous vos tests ou aimez-vous le faire d'une autre manière? Je voudrais réutiliser autant que possible le fichier de bootstrap habituel. Comment dois-je sécher mon boot pour des tests et une utilisation normale?

Voici mon test jusqu'à présent:

<*>

Que dois-je faire?

env; /** * @var Zend_Controller_Front */ protected

Quelqu'un a-t-il déjà réussi à configurer Zend_Test? Quelle était votre méthode / approche et comment exécutez-vous vos tests / suites de tests?

J'ai déjà PHPUnit installé et fonctionne. Maintenant, j'essaie d'écrire quelques tests de contrôleur simples. La documentation de Zend Framework suppose que le chargement automatique est configuré, ce que je n'ai pas encore fait. Quelle méthode utilisez-vous pour charger automatiquement les fichiers appropriés? Je le fais dans mon fichier d’amorçage normal, mais je ne veux pas encombrer mon test avec un tas d’inclusions et d’établissements. Une classe de cas de tests de contrôleurs abstraits serait-elle la solution?

Qu'en est-il du plug-in d'amorçage utilisé dans la documentation ... amorcez-vous vos tests ou aimez-vous le faire d'une autre manière? Je voudrais réutiliser autant que possible le fichier de bootstrap habituel. Comment dois-je sécher mon boot pour des tests et une utilisation normale?

Voici mon test jusqu'à présent:

<*>

Que dois-je faire?

front; /** * @var string Path to application root */ protected

Quelqu'un a-t-il déjà réussi à configurer Zend_Test? Quelle était votre méthode / approche et comment exécutez-vous vos tests / suites de tests?

J'ai déjà PHPUnit installé et fonctionne. Maintenant, j'essaie d'écrire quelques tests de contrôleur simples. La documentation de Zend Framework suppose que le chargement automatique est configuré, ce que je n'ai pas encore fait. Quelle méthode utilisez-vous pour charger automatiquement les fichiers appropriés? Je le fais dans mon fichier d’amorçage normal, mais je ne veux pas encombrer mon test avec un tas d’inclusions et d’établissements. Une classe de cas de tests de contrôleurs abstraits serait-elle la solution?

Qu'en est-il du plug-in d'amorçage utilisé dans la documentation ... amorcez-vous vos tests ou aimez-vous le faire d'une autre manière? Je voudrais réutiliser autant que possible le fichier de bootstrap habituel. Comment dois-je sécher mon boot pour des tests et une utilisation normale?

Voici mon test jusqu'à présent:

<*>

Que dois-je faire?

root; /** * Constructor * * Initialize environment, root path, and configuration. * * @param string $env * @param string|null $root * @return void */ public function __construct($env, $root = null) { $this->_setEnv($env); if (null === $root) { $root = realpath(dirname(__FILE__) . '/../../../'); } $this->_root = $root; $this->initPhpConfig(); $this->_front = Zend_Controller_Front::getInstance(); } /** * Route startup * * @return void */ public function routeStartup(Zend_Controller_Request_Abstract $request) { $this->initDb(); $this->initHelpers(); $this->initView(); $this->initPlugins(); $this->initRoutes(); $this->initControllers(); } // definition of methods would follow... }

Que dois-je faire?

Était-ce utile?

La solution

Voici ce que j'ai fait pour que cela fonctionne:

Premièrement, nous devons résoudre le problème du chargement automatique. Pour ce faire, nous allons créer un fichier contenant tous les tests et le placer dans le répertoire tests. Note: J'ai copié tout ça depuis mon /public/index.php.

# /tests/loader.php

<?php

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));

set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR .
                  APPLICATION_PATH . '/models' . PATH_SEPARATOR .
                  APPLICATION_PATH . '/forms' . PATH_SEPARATOR .
                  get_include_path() );

require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();

Deuxièmement, nous devons inclure ce fichier dans notre test. Notre fichier de test se trouve dans / tests / application / controllers /. Je ne vais pas utiliser mon bootstrap en tant que plug-in, car mon fichier bootstrap fonctionne de la même manière que le Tutoriel QuickStart . Je me contenterai d'y faire un lien en définissant l'emplacement comme public $ bootstrap. Lorsque Zend_Test_PHPUnit_ControllerTestCase est construit, il cherche le fichier d'amorçage que nous avons défini ici.

<?php

require_once '../../loader.php';

class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
    public $bootstrap = '../../../application/bootstrap.php';

    public function testIndexAction()
    {
        $this->dispatch('/index');
        $this->assertController('index');
        $this->assertAction('index');
    }

}

Et c'est tout! Si mon fichier de démarrage était déjà un plugin, cela pourrait être un peu plus compliqué, mais comme ce n'est pas le cas, c'est très facile.

Autres conseils

Au lieu d'utiliser

require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();

changez-le en

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

registerAutoLoad () est obsolète à partir de 1.8.0

J'utilise toujours un simple TestHelper.php qui effectue des tâches d'initialisation de base. Ce fichier est inclus dans chaque fichier de test. Une des choses que je fais est d’enregistrer le chargeur automatique Zend Framework car j’ai rencontré des problèmes de dépendance majeurs, en particulier lors de l’utilisation de filtres, de validateurs et de formulaires. Il est presque impossible de garder une trace de tous les fichiers requis et de les inclure manuellement dans les cas de test.

Vous pouvez peut-être déplacer l'initialisation du chargement automatique et la configuration des chemins d'inclusion dans votre plug-in d'amorçage, car cette procédure devrait être identique pour l'application réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top