大家好, 怎么用phpunit去测试protected 方法? 我现在用phpunit测试zend project, 代码如下    <?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
    
    
    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:
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"请问怎么样处理,有什么建议

解决方案 »

  1.   

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

  2.   

     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();
            }