$ this-> dispatch('/')在zend测试中意味着什么

时间:2011-04-27 09:27:08

标签: php unit-testing oop

我正在为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-&gt; dispatch('/');手段?这是否意味着要求申请的根目录?

2 个答案:

答案 0 :(得分:3)

从评论到这种方法:

 * 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 :(得分:1)

在面向对象编程中,当一个类扩展另一个类时,它继承了其父类(它正在扩展的类)的方法(或函数)。

您可以使用$this->method从内部或其后代(其他扩展它的类)调用类方法。

鉴于dispatch中未定义IndexControllerTest,它必须是ControllerTestCaseIndexControllerTest扩展)的函数,并且它正在传递字符串{{1}对它来说。

查看课程'/',会有一个名为ControllerTestCase的函数,你可以看到它在那里做了什么。