Что означает $ this-> dispatch ('/') в тесте Zend - PullRequest
2 голосов
/ 27 апреля 2011

Я пишу модульный тест для проекта Zend, я хочу знать

<?php

    class IndexControllerTest extends ControllerTestCase
    {

        public function testHomePage() {
            $this->dispatch('/');

        }
    }

ControllerTestcase.php расширяет Zend / Test / PHPUnit / ControllerTestCase.php

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

    class ControllerTestCase 
        extends Zend_Test_PHPUnit_ControllerTestCase 
    {
        protected $application;

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

        }

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

            $this->application->bootstrap();


        }
    }

что делает$ this-> отправка ( '/');средства?это значит пересылать запрос в корень приложения?

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Из комментария к этому методу:

 * Dispatch the MVC
 *
 * If a URL is provided, sets it as the request URI in the request object.
 * Then sets test case request and response objects in front controller,
 * disables throwing exceptions, and disables returning the response.
 * Finally, dispatches the front controller.  

http://framework.zend.com/svn/framework/standard/tags/release-1.9.8/library/Zend/Test/PHPUnit/ControllerTestCase.php

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

В объектно-ориентированном программировании, когда класс расширяет другой, он наследует методы (или функции) своего родительского класса (класса, который он расширяет).

Вы можете использовать $this->method для вызова методов классов изнутри себя или его потомков (других классов, расширяющих его).

, учитывая, что dispatch не определено в IndexControllerTest,это должна быть функция ControllerTestCase (которая расширяется IndexControllerTest), и она передает ей строку '/'.

Найдите класс ControllerTestCase, и будет функция с именемdispatch, вы можете видеть, что там происходит.

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