我打电话
$this->application->bootstrap()->run();
从我的测试设置功能内部,没有输出。你应该run()
在测试环境中调用吗?
我的测试有效,但前端控制器插件从未执行(这对我的应用程序来说是必需的)。Putting->run()
执行插件,但 phpunit 只是停止并且没有输出。
我有工作测试,但我需要前端控制器插件才能在测试环境中执行。Bootstrap 执行,但插件不执行。当他们通过->run()
时,没有输出
有什么建议么?
编辑:添加setup()
示例
require_once realpath(__DIR__.'/../../').'/TestBackendConfiguration.php';
abstract class Controllers_Backend_BaseControllerTest extends Zend_Test_PHPUnit_ControllerTestCase {
protected $config;
protected $application;
protected $users;
protected static $iterations = 0;
public function setUp() {
$this->bootstrap = array($this, 'appBootstrap');
parent::setUp();
$this->configureUsers();
$this->configureACL($this->users);
}
public function appBootstrap() {
$this->config = new Zend_Config_Ini(CORE_PATH . '/configs/common.ini', APPLICATION_ENV, true);
$this->config->merge(new Zend_Config_Ini(CORE_PATH . '/configs/backend.ini', APPLICATION_ENV));
$this->config->merge(new Zend_Config_Ini(CORE_PATH . '/configs/application.ini', APPLICATION_ENV));
// Reset bootstraps
$this->config->bootstrap->path = CORE_PATH . '/backend/Bootstrap.php';
$this->config->resources->frontController->controllerDirectory = CORE_PATH . '/backend/controllers';
$this->config->resources->frontController->actionHelperPaths->Frontend_Controller_Action_Helper = CORE_PATH . '/backend/controllers/Action/Helper';
$this->config->resources->frontController->baseUrl = "/admin";
$this->config->resources->layout->layoutPath = CORE_PATH . '/backend/layouts/scripts';
$this->application = new Zend_Application( APPLICATION_ENV, $this->config );
$this->application->bootstrap()->run();
}
}
调整的原因$this->config
是因为我有前端和后端相关的测试,它们需要不同的配置。他们有自己的Configuration.php
脚本,它们都声明APPLICATION_PATH
,因此第二次运行的测试无法重新定义此 const,并且应用程序无法正确引导。
现在,我主要担心的是我的插件没有在测试环境中调度,这会破坏我的应用程序,因为我有数据添加到我需要访问的注册表中,但显然不存在。想法?
添加->run()
调度插件,但我的测试没有输出。我的后端控制器测试都扩展了这个负责设置后端测试环境的类。