Начальная загрузка Zend_Application с Zend_Test - PullRequest
1 голос
/ 07 августа 2010

в документации предоставленный код для начальной загрузки выглядит как

protected $application;
public function setUp() {
    $this->bootstrap = array($this, 'appBootstrap');
    parent::setUp();
}
public function appBootstrap() {
    $this->application = new Zend_Application( ... );
    $this->application->bootstrap();
}

Мне было любопытно, почему, когда я пытался

protected $application;
public function setUp() {
    $this->application = new Zend_Application( ... );
    $this->application->bootstrap();
    parent::setUp();
}

это не удалось. также, когда я попытался переместить загрузчик приложения в bootstrap.php, он тоже не работает

// bootstrap.php
...
$application = new Zend_Application( ... );
$application->bootstrap();

причина, по которой я думал о переносе этого в bootstrap.php, Джон Лебенсолд из Zend Casts расширил ControllerTestCase для обработки всей этой загрузки в отдельном классе. я подумал вместо того, чтобы расширять класс, если я смогу переместить код в bootstrap.php в 1 месте, лучше бы не было

1 Ответ

0 голосов
/ 09 августа 2010

Так выглядит мой ControllerTestCase.php:

<?php
abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    public function setUp()
    {

        $this->bootstrap = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
        );
        parent::setUp();
    }
}

TestHelper.php (Bootstrap)

<?php
define('BASE_PATH', realpath(dirname(__FILE__) . '/../public'));
define('APPLICATION_PATH', realpath(BASE_PATH . '/../application'));

set_include_path(implode(PATH_SEPARATOR, array(
    '.',
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path()
)));

define('APPLICATION_ENV', 'testing');

require_once "Zend/Loader/Autoloader.php";

$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$loader->suppressNotFoundWarnings(false);

require_once 'ControllerTestCase.php';
...