我正在尝试为我正在编写的 ZF 应用程序编写一些测试用例,但我似乎无法超越这一点。
我扩展了Zend_Test_PHPUnit_ControllerTestCase
,添加了以下内容:
public function setUp() {
$this->bootstrap = new Zend_Application('testing',
APPLICATION_PATH . '/configs/application.ini');
parent::setUp();
}
它工作,它初始化 Zend Autoloader,允许我在我的库中加载其他类以及 Zend 类。所以我设置了一个测试:
public function testUserUnauthorized() {
$this->dispatch('/api/user');
//Assertions...
}
可悲的是,测试从未通过调度。相反,它给了我一个错误:
Fatal error: Class 'App_Model_User' not found in ....Action.php
Action.php 是一个扩展类Zend_Controller_Action
。其中,有一个App_Model_User
用于验证登录用户的功能。require_once
自从自动加载器工作以来,我从来不需要添加一个。这是奇怪的部分:它通过我的浏览器工作。只是不在 PHPUnit 中。
所以我转储了用 Zend Autoloader 注册的 Autoloader:
public function testUserUnauthorized() {
print_r(Zend_Loader_Autoloader::getInstance()->getAutoloaders());
exit;
$this->dispatch('/api/user');
}
它显示了我的所有模块,以及视图、控制器、模型等的命名空间。我通过浏览器做了同样的事情,并且转储匹配。