Класс Zend_Test_PHPUnit_ControllerTestCase не найден - PullRequest
2 голосов
/ 17 апреля 2009

Когда я запускаю phpunit для проверки моего контроллера, всегда появляется сообщение: Class Zend_Test_PHPUnit_Controller_TestCase could not be found ...

Все require_once выполняются и работают без ошибок.

Мои файлы:

test.php:

<?php

require_once 'bootstrap.php';

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

    public function appBootstrap ()
    {
        $this->frontController->registerPlugin(new DemoApp_Controller_Plugin_Initialize('test', PROJECT_ROOT));
    }

    public function testIndex()
    {
        $this->dispatch('/');
        $this->assertController('login');
    }   
}

bootstrap.php:

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

set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR .
        APPLICATION_PATH . '/modules' . PATH_SEPARATOR .
        APPLICATION_PATH . '/layouts' . PATH_SEPARATOR .
        get_include_path() );

require_once 'PHPUnit/Framework.php';     
require_once 'PHPUnit/Framework/TestSuite.php';    
require_once 'PHPUnit/TextUI/TestRunner.php';

error_reporting(E_ALL);

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

// Set up the config in the registry path relative to public/index.php
$config = new Zend_Config_Ini(APPLICATION_PATH . '/config.ini'); //, 'test'
Zend_Registry::set('config', $config);

/*// Set up the database in the Registry
$db = Zend_Db::factory($config->db);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
*/

// Set timezone
date_default_timezone_set("Europe/Berlin");

Ответы [ 6 ]

1 голос
/ 01 апреля 2011

Вы можете поместить это в свой загрузчик, чтобы активировать автозагрузчик.

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

Если вы создаете объект приложения, он делает это автоматически но в противном случае используйте вышеперечисленное, чтобы сделать это самостоятельно.

1 голос
/ 17 апреля 2009

Класс отсутствует в вашем пути включения, или у вас его совсем нет. Шаги, которые нужно предпринять:

  1. Найти файл класса
  2. Убедитесь, что класс в вашем включить путь, в том числе Разбор имени auto_loader: Z_Y_YourClass будет смотреть на include_path / Z / Y / YourClass.php

Удачи

0 голосов
/ 22 ноября 2012

У меня была похожая проблема при следующей настройке

  • скачал Zend 1.12,
  • создал проект с помощью инструмента zf: sh bin/zf.sh create project my-project
  • затем запустите phpunit из корневой папки проекта.

решение было cd tests, а затем запустить phpunit.

Причина , почему это произошло, заключается в том, что phpunit должен сначала загрузиться. Сценарий начальной загрузки определен в файле конфигурации tests/phpunit.xml, который будет загружен по умолчанию, если файл находится в том же каталоге, в котором выполняется команда.

phpunit.xml:

<?xml version="1.0" encoding="utf-8" ?>
<phpunit bootstrap="./bootstrap.php">
    <testsuite name="Application Test Suite">
    ....

В качестве альтернативы вы можете вызвать phpunit из любого каталога, указав расположение phpunit.xml с аргументом -c

phpunit -c tests/phpunit.xml
0 голосов
/ 28 февраля 2012

Поместите это в свой файл bootstrap.php:

require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

работал для меня. Удачи!

0 голосов
/ 10 января 2012

Два решения, которые работали для меня:

  1. создать символьную ссылку в каталоге тестов как ln -s ../library/Zend, которая позволяет автозагрузчику найти файл
  2. add / library в php include paths, что также помогает автозагрузчику найти файл
0 голосов
/ 17 апреля 2009

Самый очевидный первый вопрос: какая версия исходного кода Zend Framework есть? Это в Zend/Version.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...