0

私はZend_Testを使用しています。以下は私のtests/bootstrap.phpファイルです:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', 'testing');

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Ca_');

Zend_Controller_Action_HelperBroker::addPrefix('Ca_Controller_Action_Helper');

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
        'namespace' => "Social",
        'basePath'  => APPLICATION_PATH . "/../library",
));
$resourceLoader->addResourceType('facebook', 'Facebook/', 'Facebook');

これは、私のテストクラス(Zend_Test_PHPUnit_DatabaseTestCaseを拡張している)のsetUp()メソッドです。

public function setUp()
{
    $this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
    $this->entityUser = new Ca_Model_Entity_User_Registered();
    $a = $this->getAdapter();
    $a->setFetchMode(Zend_Db::FETCH_OBJ);
$a->query("SET FOREIGN_KEY_CHECKS=0;");     
parent::setUp();        
}

ここで、単体テストを実行すると、この特定のコード行に対して次のエラーが発生します。

$bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$options = $bootstrap->getOptions();

致命的なエラー:非オブジェクトのメンバー関数getOptions()を呼び出す

誰かが問題の原因と私がそれを解決する方法を知っていますか?

ありがとう。

4

2 に答える 2

0

それを私が直した。最終的に、アプリケーション構成をブートストラップにロードし、Zend_Registryに保存しました。そうすればはるかに簡単です。

$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
Zend_Registry::set('config', $config);
于 2012-07-16T17:18:06.003 に答える
0

コードが単一のパラメータをオブジェクトとして扱っているようです。

次のドキュメントから:http://framework.zend.com/manual/en/zend.controller.front.html

getParam($name) allows you to retrieve a single parameter 
at a time, using $name as the identifier.
于 2012-07-13T11:24:27.520 に答える