大家好,我想问个问题我想要测试一个zend项目的model,当我运行这个测试的时候,给我错误提示,我的代码如下:
这个是我想要测试的model    <?php
    
    
    
    class Application_Model_User extends Custom_Model_Base {
        protected $_table = 'user';
        protected $_primary = array('id');
        protected $_primary_ai = 'id';
        protected $_data = array();
        protected $_data_changed = array();
        protected $_readonly = array('id');
        static
        protected $_columns = array(
            'id',
            'login',
            'password_hash',
            'name',
            'surname',
            'gender',
            'street',
            'postal_code',
            'city',
            'mobile',
            'homephone',
            'email',
            'is_active');
    
        public function __construct() {
            parent::__construct();
        }
    
        static function create(array $data) {
            return parent::_create(
                    $_table,
                    get_class(),
                    $data,
                    self::$_columns,
                    true
            );
        }
    
        static function load($id) {
            return self::_selectAndBind(
                    get_class(),
                            self::getDefaultAdapter()
                            ->select()
                            ->from($_table)
                            ->where('id = ?', array($id)),
                    true);
        }
    
        static function find($name, $order=null, $limit=null, $offset=null) {
            return self::_selectAndBind(
                    get_class(),
                            self::getDefaultAdapter()
                            ->select()
                            ->from($_table)
                            ->where('name = ?', array($name))
                            ->order($order)
                            ->limit($limit, $offset)
            );
        }
    
    }他继承里一个父类,这个父类代码如下:    <?
    
    abstract class Custom_Model_Base
    {
        /** @var Zend_Db_Adapter_Abstract */
        static protected $_db_default = null;
    
        /** @var Zend_Db_Adapter_Abstract */
        protected $_db = null;
        protected $_table = '';
        protected $_primary = array();
        /** $var string indicates which column from pk using auto increment function, set to null if none column is using auto incrementation */
        protected $_primary_ai = null;
        protected $_data = array();
        protected $_data_changed = array();
        protected $_readonly = array();
    
    
        /**
         * @param Zend_Db_Adapter_Abstract $adapter overrides global (static) adapter used for all models
         */
        protected function  __construct($adapter=null) {
            if ($adapter !== null) {
                if ($adapter instanceof Zend_Db_Adapter_Abstract)
                {
                    $this->_db = $adapter;
                    return;
                }
                $this->_db = &self::$_db_default;
            }
    
        }
    
        /**
         * @param $default_adapter allows to set default adapter for whole model layer based on that class
         */
        static public function init($default_adapter = null)
        {
            if (self::$_db_default === null)
            {
                if (!is_null($default_adapter))
                {
                    if (!$default_adapter instanceof Zend_Db_Adapter_Abstract)
                    {
                        throw new Exception('Provided adapter does not extend Zend_Db_Adapter_Abstract');
                    }
                    self::$_db_default = $default_adapter;
                }
                else if (Zend_Registry::isRegistered('db'))
                {
                    self::$_db_default = Zend_Registry::get('db');
                }
                else
                {
                    throw new Exception('No default adapter provided for the model layer');
                }
    
            }
        }
    
        /**
         * @return Zend_Db_Adapter_Abstract default database adapter
         */
        static public function getDefaultAdapter()
        {
            return self::$_db_default;
        }
    
        /**
         * Saves changed columns from the model object
         * @return bool success - true / failure - false
         */
        public function save()
        {
            $to_update = array();
            foreach(array_keys($this->_data_changed) as $col)
            {
                $to_update[$col] = $this->_data[$col];
            }
    
            if (count($to_update))
            {
                // create where clause
                $where = array();
                foreach($this->_primary as $pk)
                {
                    $where = array($pk.' = ?' => $this->_data[$pk]);
                }
    
                return ($this->_db->update($this->_table, $to_update, $where) != 0);
            }
            else
            {
                return true;
            }
        }
    
       
        public function  __set($n, $v)
        {
            if (!isset($this->_data[$n]))
            {
                throw new Exception('Column \''.$n.'\' doesn\'t exists');
            }
            else if (in_array($n, $this->_readonly))
            {
                throw new Exception('Column \''.$n.'\' is set as read-only');
            }
    
            if ($this->_data[$n] != $v)
            {
                $this->_data_changed[$n] = 1;
                $this->_data[$n] = $v;
            }
        }
    
        public function  __get($v)
        {
            if (!isset($this->_data[$n]))
            {
                throw new Exception('Column \''.$n.'\' doesn\'t exists');
            }
            return $this->_data[$n];
        }
    
        
    }我的测试代码是:    <?php
    
    require_once(APPLICATION_PATH.'/models/CustomModelBase.php');
    
    class Model_User2Test 
     extends PHPUnit_Framework_TestCase
    {
     protected $_model;
    
     public function setUp() {
    
     parent::setUp();
    
     $this->_model = new Application_Model_User2();
    
     //$foo = $this->getMock();
     }
    
     public function testCanDoTest() {
     $this->assertInstanceOf('Application_Model_User2', $this->_model);
     //$this->assertType('Application_Model_User2',new Application_Model_User2());
     }
    
     public function testCanFind() {
     $this->assertTrue(true);
     $this->_model->init();
     $this->assertNotNull($this->_model->find('admin'));
     }
    }
当我运行测试的时候,给我一下提示,说是变量_table没有定义     1) Model_User2Test::testCanFind
    Undefined variable: _table
    application\models\User2.php:57
    tests\application\models\User2Test.php:27这个错误是为什么?请问如何修改?请大家帮帮我