2013-10-21 221 views
0

在我的應用我有這個奇怪的錯誤只測試的時候,我不是在我的回購文件夾測試任何類不過也有這樣的:PHPUnit的奇怪的錯誤

Call to undefined method Application_Model_Cache::getInstance() in C:\wamp\www\truCrowd_dev\application\models\Repo\User.php on line 12 

我的用戶回購是:

class Application_Model_Repo_User 
{ 
    private $_database; 
    private $_cache ; 

    public function __construct() 
    { 

     $this->_database = Application_Model_Database::getInstance(); 
     $this->_cache  = Application_Model_Cache::getInstance(); 
     $this->_longCache = Application_Model_Cache::getInstance(604800); 
    } 

我的緩存類是:

class Application_Model_Cache 
{ 
    public static function getInstance($_expiration = 7200) 
    { 
     $frontend= array(
     'lifetime' => $_expiration, 
     'automatic_serialization' => true 
     ); 

     $backend= array(
     'cache_dir' => './cache/', 
     ); 

     $cache = Zend_Cache::factory('Output', 
      'File', 
      $frontend, 
      $backend 
     ); 
     return $cache; 
    } 
} 

我的測試引導爲:

<?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', 'production'); 

// 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'; 
Zend_Loader_Autoloader::getInstance(); 

我曾嘗試不必實例就可以改變其緩存類,但我得到了同樣的結果... 我的數據庫類具有完全相同的結構,但我haven`t在過去得到了這一點,現在我在開發中取得了進展我想進行測試並出現錯誤

+1

您是否在模擬任何測試中的Application_Model_Cache類?取決於你做的方式,也許這個模擬被用作一個獨特的實例,所以這個方法不存在。另外,你是否試圖隔離使錯誤發生的測試? – gontrollez

+0

如果我正在測試Cache類?你能解釋一下嗎? Zend_Cache似乎(至少對我來說)有一個singleton實現,所以可以創建多個實例... –

+0

通過在我的配置中關閉緩存但仍然...: –

回答

1

您應該檢查Application_Model_Cache類是否在您的任何測試中被模擬,以及調用不存在的方法時是否使用了模擬。