【发布时间】:2011-06-02 23:40:53
【问题描述】:
我正在尝试在我的测试中使用 Zend_Test_PHPUnit_ControllerTestCase 并且遇到了困难。
我的应用程序引导程序实例化了一个库类,该类管理对名为“LiveData”的 Zend_Session_Namespace 的访问。 LiveData 维护 Current User、Current Organsation 等的数据数组。实例化后,LiveData 对象将存储在注册表中。
当我实例化 LiveData 时,我设置了 singleInstance = true,即。 new Zend_Session_Namespace('LiveData', true) 这是为了减少关于谁对 LiveData 做什么的潜在混淆。
无论如何,这似乎工作正常。我浏览网站、登录、注销等,我的会话数据表现符合我的预期。
但是,在尝试测试时,我收到一条消息,提示“此命名空间的会话命名空间对象已存在”。
我的测试在每个测试文件中引导如下:
public function setUp()
{
$this->bootstrap = new Zend_Application(APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
}
这是 Netbeans 放置在那里的默认脚手架。阅读 Zend_Test 文档,我觉得这很好。
我在测试中调度控制器时似乎出现了问题,如下:
public function testIndexIsDefaultAction()
{
$this->dispatch('/');
// assertions
$this->assertController('Index');
$this->assertAction('index');
}
我认为测试的 setUp() 方法会导致我的应用程序引导程序运行(并创建 LiveData 的副本)。然后$this->dispatch('/') 再次运行引导程序......但我无法想象为什么会这样。 (我们为什么要让它运行两次?)如果您能阐明我的困境,我将不胜感激!
【问题讨论】:
标签: unit-testing zend-framework phpunit