【问题标题】:What does $this->dispatch('/') means in zend test$this->dispatch('/') 在 zend 测试中是什么意思
【发布时间】:2011-08-13 16:51:52
【问题描述】:

我正在为 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->dispatch('/'); 是做什么的方法?这是否意味着将请求转发到应用程序的根目录?

【问题讨论】:

  • @Flavius 我已经说过我是zend框架和phpunit的新手,我只是需要一些帮助而不仅仅是批评!
  • 不要对批评过于严厉,这是旅程的一部分。只要不断提出问题,您就会到达目的地。
  • @Mild Fuzz 谢谢我明白了!

标签: php unit-testing oop


【解决方案1】:

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

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

鉴于dispatch 未在IndexControllerTest 中定义,它必须是ControllerTestCaseIndexControllerTest 扩展)的函数,并且它正在将字符串'/' 传递给它。

查看ControllerTestCase 类,会有一个名为dispatch 的函数,你可以看到它在做什么。

【讨论】:

  • 我认为他问的不是 dispatch() 将如何被调用(以及该方法在哪里声明),而是“/”参数的含义。
  • 我真的很想知道'/'参数是什么意思。
  • 如果你按照我的回答,你会发现。
【解决方案2】:

从评论到这个方法:

 * 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

【讨论】:

  • 您可以通过使用一些 IDE(例如 NetBeans 或 PhpStorm)自行轻松找到它。
  • IDE 不应该替代能力。首先学习手动操作,然后在您已经是一名称职的程序员并且您的老板要求您提高工作效率时跳转到 IDE。这首先是一个 IDE。其余的是(想要的)使用它的副作用。
  • +1 为自己找到它,这基本上是我的建议。 :)
  • @Flavius,能力和从 IDE 中学习并不是相互排斥的。并且建议人们在“毕业”之前学习记事本编程以获得使用 IDE 的特权是愚蠢的。
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 2014-05-20
  • 2011-08-22
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 2011-09-10
  • 2012-05-04
相关资源
最近更新 更多