Domanda

Qualcuno ha avuto successo nell'impostare Zend_Test? Qual è stato il tuo metodo / approccio e come esegui i tuoi test / test suite?

Ho già PHPUnit installato e funzionante. Ora sto cercando di scrivere alcuni semplici test del controller. La documentazione di Zend Framework presuppone che sia installato il caricamento automatico, cosa che non ho fatto. Quale metodo usi tu per caricare automaticamente i file appropriati? Lo faccio nel mio normale file bootstrap, ma non voglio ingombrare il mio test con un sacco di include e impostare percorsi. Una classe di test case controller astratta sarebbe la strada da percorrere?

Che dire del plug-in bootstrap come usa la documentazione ... è così che fai il bootstrap dei test o ti piace farlo in un modo diverso? Vorrei riutilizzare il più possibile il normale file bootstrap. Come devo ASCIUGARE il mio bootstrap per i test e il normale utilizzo?

Ecco il mio test finora:

<?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 

Qualcuno ha avuto successo nell'impostare Zend_Test? Qual è stato il tuo metodo / approccio e come esegui i tuoi test / test suite?

Ho già PHPUnit installato e funzionante. Ora sto cercando di scrivere alcuni semplici test del controller. La documentazione di Zend Framework presuppone che sia installato il caricamento automatico, cosa che non ho fatto. Quale metodo usi tu per caricare automaticamente i file appropriati? Lo faccio nel mio normale file bootstrap, ma non voglio ingombrare il mio test con un sacco di include e impostare percorsi. Una classe di test case controller astratta sarebbe la strada da percorrere?

Che dire del plug-in bootstrap come usa la documentazione ... è così che fai il bootstrap dei test o ti piace farlo in un modo diverso? Vorrei riutilizzare il più possibile il normale file bootstrap. Come devo ASCIUGARE il mio bootstrap per i test e il normale utilizzo?

Ecco il mio test finora:

<*>

Cosa devo fare?

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

Qualcuno ha avuto successo nell'impostare Zend_Test? Qual è stato il tuo metodo / approccio e come esegui i tuoi test / test suite?

Ho già PHPUnit installato e funzionante. Ora sto cercando di scrivere alcuni semplici test del controller. La documentazione di Zend Framework presuppone che sia installato il caricamento automatico, cosa che non ho fatto. Quale metodo usi tu per caricare automaticamente i file appropriati? Lo faccio nel mio normale file bootstrap, ma non voglio ingombrare il mio test con un sacco di include e impostare percorsi. Una classe di test case controller astratta sarebbe la strada da percorrere?

Che dire del plug-in bootstrap come usa la documentazione ... è così che fai il bootstrap dei test o ti piace farlo in un modo diverso? Vorrei riutilizzare il più possibile il normale file bootstrap. Come devo ASCIUGARE il mio bootstrap per i test e il normale utilizzo?

Ecco il mio test finora:

<*>

Cosa devo fare?

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

Qualcuno ha avuto successo nell'impostare Zend_Test? Qual è stato il tuo metodo / approccio e come esegui i tuoi test / test suite?

Ho già PHPUnit installato e funzionante. Ora sto cercando di scrivere alcuni semplici test del controller. La documentazione di Zend Framework presuppone che sia installato il caricamento automatico, cosa che non ho fatto. Quale metodo usi tu per caricare automaticamente i file appropriati? Lo faccio nel mio normale file bootstrap, ma non voglio ingombrare il mio test con un sacco di include e impostare percorsi. Una classe di test case controller astratta sarebbe la strada da percorrere?

Che dire del plug-in bootstrap come usa la documentazione ... è così che fai il bootstrap dei test o ti piace farlo in un modo diverso? Vorrei riutilizzare il più possibile il normale file bootstrap. Come devo ASCIUGARE il mio bootstrap per i test e il normale utilizzo?

Ecco il mio test finora:

<*>

Cosa devo fare?

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

Qualcuno ha avuto successo nell'impostare Zend_Test? Qual è stato il tuo metodo / approccio e come esegui i tuoi test / test suite?

Ho già PHPUnit installato e funzionante. Ora sto cercando di scrivere alcuni semplici test del controller. La documentazione di Zend Framework presuppone che sia installato il caricamento automatico, cosa che non ho fatto. Quale metodo usi tu per caricare automaticamente i file appropriati? Lo faccio nel mio normale file bootstrap, ma non voglio ingombrare il mio test con un sacco di include e impostare percorsi. Una classe di test case controller astratta sarebbe la strada da percorrere?

Che dire del plug-in bootstrap come usa la documentazione ... è così che fai il bootstrap dei test o ti piace farlo in un modo diverso? Vorrei riutilizzare il più possibile il normale file bootstrap. Come devo ASCIUGARE il mio bootstrap per i test e il normale utilizzo?

Ecco il mio test finora:

<*>

Cosa devo fare?

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... }

Cosa devo fare?

È stato utile?

Soluzione

Ecco cosa ho fatto per farlo funzionare:

Innanzitutto, dobbiamo risolvere il problema di caricamento automatico. Lo faremo creando un file che includerà tutti i test e lo inseriremo nella directory dei test. Nota: ho praticamente copiato tutto questo dal mio /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();

In secondo luogo, dobbiamo includere questo file nel nostro test. Il nostro file di test è in / test / applicazione / controller /. Non userò il mio bootstrap come plugin poiché il mio file bootstrap funziona allo stesso modo di Tutorial di avvio rapido . Mi limiterò a collegarlo impostando la posizione come $ bootstrap pubblico. Quando Zend_Test_PHPUnit_ControllerTestCase costruisce, cercherà il file bootstrap che impostiamo qui.

<?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');
    }

}

E questo è tutto! Se il mio file bootstrap era già un plug-in, questo potrebbe essere un po 'più complicato, ma poiché non lo è, è super facile.

Altri suggerimenti

Invece di usare

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

modificalo in

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

registerAutoLoad () è obsoleto a partire da 1.8.0

Uso sempre un semplice TestHelper.php che esegue alcune operazioni di inizializzazione di base. Questo file è incluso in ogni file di test case. Una delle cose che faccio è la registrazione del caricatore automatico di Zend Framework poiché ho riscontrato grossi problemi di dipendenza, specialmente durante l'utilizzo di filtri, validatori e moduli. È quasi impossibile tenere traccia di tutti i file richiesti e includerli manualmente nei casi di test.

Puoi forse spostare l'inizializzazione del caricamento automatico e la configurazione dei percorsi di inclusione nel tuo plugin di bootstrap poiché questa procedura dovrebbe essere la stessa per l'applicazione reale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top