PHPUnit配置测试

时间:2011-05-05 04:11:40

标签: php phpunit

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

如果没有确切地看到zfrun.php做了什么,我只能猜测,听起来你需要放弃ControllerTestCaseControllerTestCase旨在模仿通过Zend调度程序发送的HTTP请求,但您不需要。{/ p>

相反,您可以尝试通过设置$ argv来命令从命令行调用zfrun.php,因为它会看起来并自己执行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 ...
}

答案 1 :(得分:0)

如果这是您的主页测试,请使用

$this->dispatch('/');

如果没有,您必须为其提供将触发加载此控制器的路径的URL。