Pregunta

¿Alguien ha tenido éxito al configurar Zend_Test? ¿Cuál fue su método / enfoque y cómo ejecuta sus pruebas / conjuntos de pruebas?

Ya tengo PHPUnit instalado y funcionando. Ahora estoy tratando de escribir algunas pruebas de controlador simples. La documentación de Zend Framework supone que la carga automática está configurada, lo cual no he hecho. ¿Qué método utiliza para cargar automáticamente los archivos adecuados? Lo hago en mi archivo de arranque normal, pero no quiero saturar mi prueba con un montón de incluye y configurar rutas. ¿Sería una clase de caso de prueba de controlador abstracto el camino a seguir?

¿Qué pasa con el complemento bootstrap como lo usa la documentación ... es así como arrancas tus pruebas, o te gusta hacerlo de una manera diferente? Me gustaría reutilizar la mayor cantidad posible de archivos de arranque regulares. ¿Cómo debo SECAR mi bootstrap para pruebas y uso normal?

Aquí está mi prueba hasta ahora:

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

¿Alguien ha tenido éxito al configurar Zend_Test? ¿Cuál fue su método / enfoque y cómo ejecuta sus pruebas / conjuntos de pruebas?

Ya tengo PHPUnit instalado y funcionando. Ahora estoy tratando de escribir algunas pruebas de controlador simples. La documentación de Zend Framework supone que la carga automática está configurada, lo cual no he hecho. ¿Qué método utiliza para cargar automáticamente los archivos adecuados? Lo hago en mi archivo de arranque normal, pero no quiero saturar mi prueba con un montón de incluye y configurar rutas. ¿Sería una clase de caso de prueba de controlador abstracto el camino a seguir?

¿Qué pasa con el complemento bootstrap como lo usa la documentación ... es así como arrancas tus pruebas, o te gusta hacerlo de una manera diferente? Me gustaría reutilizar la mayor cantidad posible de archivos de arranque regulares. ¿Cómo debo SECAR mi bootstrap para pruebas y uso normal?

Aquí está mi prueba hasta ahora:

<*>

¿Qué debo hacer?

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

¿Alguien ha tenido éxito al configurar Zend_Test? ¿Cuál fue su método / enfoque y cómo ejecuta sus pruebas / conjuntos de pruebas?

Ya tengo PHPUnit instalado y funcionando. Ahora estoy tratando de escribir algunas pruebas de controlador simples. La documentación de Zend Framework supone que la carga automática está configurada, lo cual no he hecho. ¿Qué método utiliza para cargar automáticamente los archivos adecuados? Lo hago en mi archivo de arranque normal, pero no quiero saturar mi prueba con un montón de incluye y configurar rutas. ¿Sería una clase de caso de prueba de controlador abstracto el camino a seguir?

¿Qué pasa con el complemento bootstrap como lo usa la documentación ... es así como arrancas tus pruebas, o te gusta hacerlo de una manera diferente? Me gustaría reutilizar la mayor cantidad posible de archivos de arranque regulares. ¿Cómo debo SECAR mi bootstrap para pruebas y uso normal?

Aquí está mi prueba hasta ahora:

<*>

¿Qué debo hacer?

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

¿Alguien ha tenido éxito al configurar Zend_Test? ¿Cuál fue su método / enfoque y cómo ejecuta sus pruebas / conjuntos de pruebas?

Ya tengo PHPUnit instalado y funcionando. Ahora estoy tratando de escribir algunas pruebas de controlador simples. La documentación de Zend Framework supone que la carga automática está configurada, lo cual no he hecho. ¿Qué método utiliza para cargar automáticamente los archivos adecuados? Lo hago en mi archivo de arranque normal, pero no quiero saturar mi prueba con un montón de incluye y configurar rutas. ¿Sería una clase de caso de prueba de controlador abstracto el camino a seguir?

¿Qué pasa con el complemento bootstrap como lo usa la documentación ... es así como arrancas tus pruebas, o te gusta hacerlo de una manera diferente? Me gustaría reutilizar la mayor cantidad posible de archivos de arranque regulares. ¿Cómo debo SECAR mi bootstrap para pruebas y uso normal?

Aquí está mi prueba hasta ahora:

<*>

¿Qué debo hacer?

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

¿Alguien ha tenido éxito al configurar Zend_Test? ¿Cuál fue su método / enfoque y cómo ejecuta sus pruebas / conjuntos de pruebas?

Ya tengo PHPUnit instalado y funcionando. Ahora estoy tratando de escribir algunas pruebas de controlador simples. La documentación de Zend Framework supone que la carga automática está configurada, lo cual no he hecho. ¿Qué método utiliza para cargar automáticamente los archivos adecuados? Lo hago en mi archivo de arranque normal, pero no quiero saturar mi prueba con un montón de incluye y configurar rutas. ¿Sería una clase de caso de prueba de controlador abstracto el camino a seguir?

¿Qué pasa con el complemento bootstrap como lo usa la documentación ... es así como arrancas tus pruebas, o te gusta hacerlo de una manera diferente? Me gustaría reutilizar la mayor cantidad posible de archivos de arranque regulares. ¿Cómo debo SECAR mi bootstrap para pruebas y uso normal?

Aquí está mi prueba hasta ahora:

<*>

¿Qué debo hacer?

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

¿Qué debo hacer?

¿Fue útil?

Solución

Esto es lo que hice para que funcione:

Primero, necesitamos resolver el problema de carga automática. Haremos esto creando un archivo que incluirán todas las pruebas y lo pondremos en el directorio de pruebas. Nota: prácticamente copié todo esto desde mi /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();

Segundo, debemos incluir este archivo en nuestra prueba. Nuestro archivo de prueba está en / tests / application / controllers /. No voy a usar mi bootstrap como complemento ya que mi archivo bootstrap funciona de la misma manera que Tutorial de inicio rápido . Solo lo vincularé estableciendo la ubicación como el $ bootstrap público. Cuando Zend_Test_PHPUnit_ControllerTestCase construye, buscará el archivo de arranque que configuramos aquí.

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

}

¡Y eso es todo! Si mi archivo de arranque ya era un complemento, esto podría ser un poco más complicado, pero como no lo es, es muy fácil.

Otros consejos

En lugar de usar

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

cámbielo a

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

registerAutoLoad () está en desuso a partir de 1.8.0

Siempre uso un TestHelper.php simple que hace algunas cosas básicas de inicialización. Este archivo se incluye en cada archivo de caso de prueba. Una de las cosas que hago es registrar el autocargador de Zend Framework ya que experimenté grandes problemas de dependencia, especialmente al usar filtros, validadores y formularios. Es casi imposible realizar un seguimiento de todos los archivos necesarios e incluirlos manualmente en los casos de prueba.

Quizás pueda mover la inicialización de carga automática y la configuración de las rutas de inclusión en su complemento de arranque, ya que este procedimiento debería ser el mismo para la aplicación real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top