PHPUnit настроить тест - PullRequest
       4

PHPUnit настроить тест

0 голосов
/ 05 мая 2011
class ControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
    public $object;

    public function  setUp() {
        $this->bootstrap = array($this, 'boostrap');
        parent::setUp();
    }

    public function bootstrap(){
        $this->application = new Zend_Application(
                    APPLICATION_ENV,
                    APPLICATION_PATH . '/configs/application.ini'
                );
        $this->application->bootstrap();

    }

    public function testIndexAction(){
        // body
    }

}

Это класс для теста. Мой вопрос заключается в том, как реализовать testIndexAction, где фактическая команда в командной строке:

php zfrun.php -a ..index

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Если это тест для вашей домашней страницы, используйте

$this->dispatch('/');

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

0 голосов
/ 04 мая 2011

Не зная точно, что делает zfrun.php, я могу только догадываться, и, похоже, вам нужно угробить ControllerTestCase. ControllerTestCase предназначен для имитации HTTP-запроса на отправку через диспетчер Zend, но вам это не нужно.

Вместо этого вы можете попытаться имитировать вызов zfrun.php из командной строки, установив $ argv, как это будет выглядеть, и выполнив zfrun.php самостоятельно:

function testIndexAction() {
    $argv = array(
            '-a',
            'module_name.controller_name.index',
        );
    require 'zfrun.php';
}

Проблема заключается в том, что это работает только для одного теста, при условии, что zfrun.php определяет классы или функции и не может требоваться несколько раз. Поэтому вам нужно будет делать то, что zfrun.php делает в новом базовом классе тестового набора, без использования самого zfrun.php. По сути, рефакторинг своего кода в многократно используемый вспомогательный метод тестирования.

function executeControllerAction($module, $controller, $action) {
    ... whatever magic zfrun.php does ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...