请教一个问题

大家好, 怎么用phpunit去测试protected 方法? 我现在用phpunit测试zend project, 代码如下

  PHP code
<?php
    
    //require_once('CustomModelBase.php');
    
    class Application_Model_User extends Custom_Model_Base {
       
    
        protected function __construct() {
            parent::__construct();
        }
    
        static function create(array $data) {
           
        }
    
        static function load($id) {
            
        }
    
        static function find($name, $order=null, $limit=null, $offset=null) {
   
            );
        }
    
    }


这个model在application/model folder, 他继承了一个 base class Custom_Model_Base 

在我的测试里,我想要创建一个User Object:

  PHP code
<?php
    
    
    class Model_UserTest extends ControllerTestCase
    
    {
        protected $user2;
    
        public function setUp() {
    
            parent::setUp();
    
            $this->user2 = new Application_Model_User2();
        }
    
        public function testCanDoTest() {
            $this->assertTrue(true);
        }
    
    }



这个是 CustomModelBase.php:
PHP code
abstract class Custom_Model_Base
{ 
protected function  __construct($adapter=null) {}
}


但是有错误 "PHP Fatal error: Class 'Custom_Model_Base' not found in \application\models\User.php on line 4", 之后我在User.php里requried_one "CustomModelBase.php",给我另外一个错误 "PHP Fatal error: Call to protected Application_Model_User::__construct() from context 'Model_User2Test' in D:\PHP\apache2\htdocs\ID24_Xiao\tests\application\models \UserTest.php on line 13"

请问怎么样处理,有什么建议

作者: congcongying   发布时间: 2011-05-10

class Application_Model_User extends Custom_Model_Base {
   
   
  protected function __construct() {
  parent::__construct();
  }
这个是受保护的,只能子类父类访问。你把这个改为:
  public function __construct() {
  parent::__construct();
  }
这样就OK了。或者改其他。但是这样改是不出错的最简单方法。

作者: falizixun2   发布时间: 2011-05-10

class Application_Model_User extends Custom_Model_Base {
   
   
  protected function __construct() {
  parent::__construct();
  }
该为:
  class Application_Model_User extends Custom_Model_Base {
   
   
  public function __construct() {
  parent::__construct();
  }

作者: falizixun2   发布时间: 2011-05-10