12月23日更新
Zend Framework が「このアプリケーションにはデフォルト モジュールが定義されていません」と文句を言うという問題がありました。モジュールを使用しませんでしたが、メイン アプリは正常に動作します。
私は最終的にweerophinney.netの助けを借りて問題を解決しました
ブートストラップでは、コントローラー ディレクトリを最小限に設定する必要があり
$this->frontController->addControllerDirectory(...)
ますappBootstrap()
。メソッド内で呼び出しを行います。私の初期化プラグインが私のためにそのようなことをするので、私の例ではしませんでした。
この問題は、以下を追加することで解決されますsetUp()
$this->getFrontController()->setControllerDirectory(APPLICATION_PATH . '/controllers');
しかし今、他にもいくつか質問があります。
1. その値が によって初期化されないのはなぜapplication.ini
ですか?
でapplication.ini
、私は持っています
[production]
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
[testing : production]
// didn't change anything regarding modules nor controllers
2.単体テストのcontrollerDirectory
inを設定しようとしましたが、機能しませんbootstrap.php
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(APPLICATION_PATH . '/controllers');
機能する唯一の方法は、を使用することsetUp()
です。何故ですか?
更新終了 12 月 23 日
コントローラー プラグインの単体テスト中に上記のエラーが発生します。モジュールは使用していません。単体テスト用のbootstrap.phpで、追加してみました
$front = Zend_Controller_Front::getInstance();
$front->setDefaultModule('default');
しかし、それでもうまくいきません。とにかく、私のbootstrap.phpは次のようになります
更新:エラーは次のようになります
2 つのエラーがありました:
1) Application_Controller_Plugin_AclTest::testAccessToUnauthorizedPageRedirectsToLogin
Zend_Controller_Exception: No default module defined for this application
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:391
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:204
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:244
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Front.php:954
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Test\PHPUnit\ControllerTestCase.php:205
D:\Projects\Tickle\tests\application\controllers\plugins\aclTest.php:6
2) Application_Controller_Plugin_AclTest::testAccessToAllowedPageWorks
Zend_Controller_Exception: No default module defined for this application
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:391
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:204
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Dispatcher\Standard.php:244
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Controller\Front.php:954
D:\ResourceLibrary\Frameworks\PHPFrameworks\Zend\Test\PHPUnit\ControllerTestCase.php:205
D:\Projects\Tickle\tests\application\controllers\plugins\aclTest.php:16
アップデート
追加してみました
public function setUp() {
$front = Zend_Controller_Front::getInstance();
$front->setDefaultModule('default');
}
その後、1つの部分が機能します。
public function testAccessToUnauthorizedPageRedirectsToLogin() { // this fails with exception "Zend_Controller_Exception: No default module defined for this application"
$this->dispatch('/projects');
$this->assertController('auth');
$this->assertAction('login');
}
public function testAccessToAllowedPageWorks() { // this passes
$auth = Zend_Auth::getInstance();
$authAdapter = new Application_Auth_Adapter('jiewmeng', 'password');
$auth->authenticate($authAdapter);
$this->dispatch('/projects');
$this->assertController('projects');
$this->assertAction('index');
}