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
答案 0 :(得分:0)
如果没有确切地看到zfrun.php
做了什么,我只能猜测,听起来你需要放弃ControllerTestCase
。 ControllerTestCase
旨在模仿通过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。