Приложение Zend не полностью загружается при тестировании с помощью PHPUnit

Zend Framework 1.11.2
PHPUnit 3.5.10
PHP 5.3.1
NetBeans 6.9.1

  1. http://pastebin.com/L5bi9AgY
  2. Я следовал руководству Лебенсольда.

Тестирование работает даже с такими вещами, как
$this->dispatch('/');
$this->assertResponseCode(200);

, но как только мне требуется класс контроллера (pastebin, #33) для его создания в методе setUp(), я получаю ошибка о том, что PHPUnit не нашел родительский класс (Zend_Controller_Action). Итак, я предполагаю, что я что-то пропустил в начальной загрузке, потому что я не загружаю все классы (?).

Кроме того, при использовании аннотации «@covers Class::method» я получаю тот же тип ошибки.

Любые предложения приветствуются. Спасибо.


person nevvermind    schedule 26.01.2011    source источник


Ответы (1)


Попробуйте потребовать класс контроллера из вашей установки, например.

    class SearchControllerTest extends ControllerTestCase {

        public function setUp() {

            parent::setUp();

            require_once(APPLICATION_PATH . '/controllers/SearchController.php');

        }
    }

Я помню, что у меня была похожая проблема, и это работало так.

person Marcin    schedule 26.01.2011
comment
Я думаю, что это сделало это. Спасибо. - person nevvermind; 26.01.2011
comment
Что ж, теперь я получаю фатальную ошибку: вызов функции-члена hasResource() для не-объекта... в ErrorController.php. Что-то все еще не так. - person nevvermind; 26.01.2011
comment
@нуш. Как вы тестируете свои контроллеры? Вы тестируете их, вручную создавая классы контроллеров в своих тестах? В любом случае, если вы считаете, что эта новая проблема связана с настоящей (т. Е. Проблема required_once), рассмотрите возможность редактирования вопроса, чтобы предоставить более подробную информацию, или создайте новый вопрос. - person Marcin; 26.01.2011
comment
У меня есть SearchController::_someMethod. Я пытаюсь создать экземпляр этого контроллера, чтобы использовать возвращаемое значение этого метода. Не уверен, как именно это реализовать, но я подумал, что это путь. Я получил некоторую информацию по этому вопросу на #zftalk, и они указали мне на ZF-8193 и ZF-10607. Практически я делаю $somePrivateProperty = new SearchController() в SearchControllerTest. - person nevvermind; 26.01.2011
comment
@нуш. Посмотрите здесь: sebastian-bergmann.de/archives/881-Testing -Your-Privates.html . Он показывает, как тестировать частные свойства и методы. Может быть, это будет полезно. - person Marcin; 26.01.2011
comment
@Marcin - у меня не было Zend_Loader_Autoloader в моем тестовом бутстрапе. Кроме того, я выяснил, как вызвать IndexController в своем тесте из это. Спасибо за ваше время. - person nevvermind; 27.01.2011