2012-08-01 3 views
1
나는 컨트롤러 유닛 테스트 설정에 노력하고

를 메타 데이터를 저장하지만 다음과 같은 오류가 실패 :단위 테스트 Zendframework : metadataCache

protected function _initCache() { 
    $frontendOptions = array(
     'lifetime' => 7200, // cache lifetime of 2 hours 
     'automatic_serialization' => true 
    ); 
    $backendOptions = array(
      //'cache_dir' => APPLICATION_PATH. '/../data/cache/' // Directory where to put the cache files 
    ); 
    // getting a Zend_Cache_Core object 
    $cache = Zend_Cache::factory('Core', 'Apc', $frontendOptions, $backendOptions); 
    Zend_Db_Table::setDefaultMetadataCache($cache); 
    Zend_Locale::setCache($cache); 
    Zend_Date::setOptions(array('cache' => $cache)); 
    return $cache; 
} 

:

내 부트 스트랩에서
InscricaoControllerTest::testInscricaoPage() 
Zend_Controller_Exception: Failed saving metadata to metadataCache#0 [internal function]: PHPUnit_Util_ErrorHandler::handleError(1024, 'Failed saving m...', 'C:\xampp\ZendFr...', 838, Array) 
#1 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Abstract.php(838): trigger_error('Failed saving m...', 1024) 
#2 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Abstract.php(874): Zend_Db_Table_Abstract->_setupMetadata() 
#3 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Abstract.php(982): Zend_Db_Table_Abstract->_setupPrimaryKey() 
#4 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Select.php(100): Zend_Db_Table_Abstract->info() 
#5 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Select.php(78): Zend_Db_Table_Select->setTable(Object(Application_Model_DbTable_TipoUsuario)) 
#6 C:\xampp\ZendFramework-1.11.12\library\Zend\Db\Table\Abstract.php(1018): Zend_Db_Table_Select->__construct(Object(Application_Model_DbTable_TipoUsuario)) 
#7 C:\htdocs\sgsa\application\models\DbTable\TipoUsuario.php(19): Zend_Db_Table_Abstract->select() 
#8 C:\htdocs\sgsa\library\Sistema\Controller\Plugin\Acl.php(10): Application_Model_DbTable_TipoUsuario->getTipoUsuario() 
#9 C:\xampp\ZendFramework-1.11.12\library\Zend\Controller\Plugin\Broker.php(309): Sistema_Controller_Plugin_Acl->preDispatch(Object(Zend_Controller_Request_HttpTestCase)) 
#10 C:\xampp\ZendFramework-1.11.12\library\Zend\Controller\Front.php(941): Zend_Controller_Plugin_Broker->preDispatch(Object(Zend_Controller_Request_HttpTestCase)) 
#11 C:\xampp\ZendFramework-1.11.12\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() 
#12 C:\xampp\ZendFramework-1.11.12\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() 
#13 C:\xampp\ZendFramework-1.11.12\library\Zend\Test\PHPUnit\ControllerTestCase.php(206): Zend_Application->run() 
#14 C:\htdocs\sgsa\tests\application\controllers\InscricaoControllerTest.php(11): Zend_Test_PHPUnit_ControllerTestCase->dispatch('/inscricao') 
#15 [internal function]: InscricaoControllerTest->testInscricaoPage() 
... 

나는 APC 캐시를 가지고 아래에서 테스트를 실행하고 있습니다.

public function testInscricaoPage() { 
    $this->dispatch('/inscricao'); 
    $this->assertResponseCode(200); 
    $this->assertQueryContentContains('h1', 'Inscrição'); 
} 

왜이 오류가 발생합니까? php cli는 캐싱을 사용할 수 없지만 응용 프로그램은 브라우저에서 정상적으로 실행됩니다.

답변

1

PHP CLI에서 APC가 기본적으로 비활성화되어 있으므로 php.ini에서 다음 구성 줄을 추가하면 문제가 해결됩니다.

apc.enable_cli=1 

이 구성은 php.ini 또는 httpd.conf에서만 설정할 수 있습니다.

+1

'/ tmp/zend_cache *'에 대한 권한이 잘못되었을 수도 있습니다 (적어도 저에게는 유용했습니다). https://twitter.com/meonkeys/status/453630634280230912 –