Конфигурация Zend Framework для PHPunit - PullRequest
1 голос
/ 14 ноября 2011

Я пытаюсь узнать о модульном тестировании в Zend Framework. Я установил PHPunit (не без проблем в пути).

Я также создал простой скелет Zend / Doctrine 2, который отлично работает и успешно записывает в БД и т. Д.

Я просто хочу начать использовать и понимать PHPunit, но он дает странные ошибки. У меня есть пустой IndexController, который абсолютно ничего не делает. Я просто хочу утверждать, что это существует. PHPunit выдает огромный список ошибок, связанных с Bootstrap, но на самом деле он работает отлично.

Как будто phpunit не уважает мои пути включения.

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

Я думаю, что код, который моя помощь объясняет:

demian@dimbo-TP:/var/www/z2d2/tests$ phpunit --version
PHPUnit 3.6.3 by Sebastian Bergmann.


<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{

    public function setUp()
    {

      $this->bootstrap = new Zend_Application(
        'development',
        APPLICATION_PATH . '/configs/application.ini'
      );

        parent::setUp();
    }

    public function tearDown()
    {
      parent::tearDown();
    }

}


<?php

class IndexControllerTest extends ControllerTestCase
{

    public function testDoesHomePageExist() 
    {
        $this->dispatch('/');
        $this->assertController('index');
        $this->assertAction('index');

    }   

}

Это мой простой загрузчик:

 <?php

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {

      /**
       *
       *
       *
       *
       */
      protected function _initConfig()
      {

        $config = new Zend_Config($this->getOptions());
        Zend_Registry::set('config', $config);

      }

      /**
       *
       *
       *
       *
       */
      protected function _initDoctrine() {

        require_once('Doctrine/Common/ClassLoader.php');

        $autoloader = Zend_Loader_Autoloader::getInstance();
        $classLoader = new \Doctrine\Common\ClassLoader('Entities',
          realpath(Zend_Registry::get('config')->resources->entityManager->connection->entities), 'loadClass');

        $autoloader->pushAutoloader(array($classLoader, 'loadClass'), 'Entities');

        $classLoader = new \Doctrine\Common\ClassLoader('Repositories',
          realpath(Zend_Registry::get('config')->resources->entityManager->connection->entities), 'loadClass');

        $autoloader->pushAutoloader(array($classLoader, 'loadClass'), 'Repositories');    

      }

    }

А теперь ошибки (извините за длину):

    demian@dimbo-TP:/var/www/z2d2/tests$ phpunit
PHPUnit 3.5.15 by Sebastian Bergmann.

PHP Fatal error:  Bootstrap::_initDoctrine(): Failed opening required 'Doctrine/Common/ClassLoader.php' (include_path='/var/www/z2d2/application/../views:.:/usr/share/php:/usr/share/php/:/usr/local/share/php/library') in /var/www/z2d2/application/Bootstrap.php on line 28
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
PHP   3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129
PHP   4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188
PHP   5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:305
PHP   6. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:693
PHP   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:733
PHP   8. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:757
PHP   9. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:576
PHP  10. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:666
PHP  11. ModelTestCase->setUp() /usr/share/php/PHPUnit/Framework/TestCase.php:626
PHP  12. Zend_Application->bootstrap() /var/www/z2d2/tests/application/models/ModelTestCase.php:16
PHP  13. Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() /usr/local/share/php/library/Zend/Application.php:355
PHP  14. Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:586
PHP  15. Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:622
PHP  16. Bootstrap->_initDoctrine() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:669

Fatal error: Bootstrap::_initDoctrine(): Failed opening required 'Doctrine/Common/ClassLoader.php' (include_path='/var/www/z2d2/application/../views:.:/usr/share/php:/usr/share/php/:/usr/local/share/php/library') in /var/www/z2d2/application/Bootstrap.php on line 28

Call Stack:
    0.0002     326940   1. {main}() /usr/bin/phpunit:0
    0.0424     666604   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49
    0.0424     667084   3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129
    0.0924    4311848   4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188
    0.1036    4751832   5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:305
    0.1037    4752248   6. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:693
    0.1038    4752576   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:733
    0.1038    4752576   8. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:757
    0.1040    4752576   9. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:576
    0.2036    4787392  10. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:666
    0.2082    4891936  11. ModelTestCase->setUp() /usr/share/php/PHPUnit/Framework/TestCase.php:626
    0.2567    5678688  12. Zend_Application->bootstrap() /var/www/z2d2/tests/application/models/ModelTestCase.php:16
    0.2568    5678732  13. Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() /usr/local/share/php/library/Zend/Application.php:355
    0.2569    5678732  14. Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:586
    0.2609    5699280  15. Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:622
    0.2610    5699472  16. Bootstrap->_initDoctrine() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:669

Может кто-нибудь показать мне, где я иду не так? Я даже подозреваю, что мой PHPunit настроен неправильно

1 Ответ

3 голосов
/ 14 ноября 2011

Я решил это следующим образом: кажется, что PHPunit не любит относительные пути включения в основном файле начальной загрузки приложения - это то, что вызывает проблему.Итак, в тестовой загрузке, на которую указывает phpunit.xml, убедитесь, что вы указали пути включения.Я добавил эти строки:

set_include_path(
    '.'
    . PATH_SEPARATOR . BASE_PATH . '/library'
    . PATH_SEPARATOR . get_include_path()
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...