0

PhpUnit::如何用受保护的变量测试__construct?

(并非总是我们应该添加公共方法 getVal()-soo 而不添加返回受保护变量值的方法)

例子:

  class Example{
    protected $_val=null;
    function __construct($val){
      $this->_val=md5 ($val);
    }
   }

编辑:

在返回 void 的函数中测试也存在问题


编辑2:

为什么我们需要测试 __construct 的示例:

class Example{
        protected $_val=null;
       //user write _constract instead __construct
        function _constract($val){
          $this->_val=md5 ($val);
        }

       function getLen($value){
         return strlen($value);
       }
 }

 class ExampleTest extends PHPUnit_Framework_TestCase{
     test_getLen(){
       $ob=new Example();//call to __construct and not to _constract
        $this->assertEquals( $ob->getLen('1234'), 4);
     }
 }

测试运行正常,但未创建示例类“构造函数”!

谢谢

4

2 回答 2

4

单元测试的主要目标是测试接口默认情况下,您应该只测试公共方法及其行为。如果没问题,那么您的课程可以供外部使用。但有时您需要测试受保护/私有成员 - 然后您可以使用反射和setAccessible() 方法

于 2011-02-08T13:47:09.150 回答
0

创建一个派生类来公开您要测试的值。

于 2011-02-08T13:45:23.653 回答