Zend_test:このアプリケーションのデフォルトモジュールは定義されていません

StackOverflow https://stackoverflow.com/questions/4507165

質問

更新23 Dec

Zend Frameworkが「このアプリケーションで定義されているデフォルトモジュールはない」と不満を言う問題がありました。モジュールを使用せず、メインアプリは正常に機能します。

私はついに助けを借りて問題を解決しました weierophinney.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.設定しようとしました controllerDirectorybootstrap.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');
}
役に立ちましたか?

解決

それが思われる解決策はこれを持っていることです 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.設定しようとしました controllerDirectorybootstrap.php 私のユニットテストのですが、それは機能しません

$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(APPLICATION_PATH

. 。 '/コントローラー');

動作する唯一の方法は使用することです setUp(). 。何故ですか?

他のヒント

同じエラーがありましたが、これはエラーをまったく解決しませんでした。セットアップ()メソッドでもプラグインもありません。しかし、ブートストラップリソースの設定は、私のアプリケーションによって正常に設定されていますが、それを解決しました。私の場合、以下は機能しました。

if($this->getFrontController()->getParam('bootstrap') === null) {
    $this->getFrontController()->setParam('bootstrap', $app->getBootstrap());
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top