作成中の 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');
}
すべてのモジュールと、ビュー、コントローラー、モデルなどの名前空間が表示されます。ブラウザーで同じことを行ったところ、ダンプが一致しました。