PHPUnit::如何测试带有受保护变量的 __construct ?

发布于 2024-10-16 09:48:30 字数 936 浏览 1 评论 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);
     }
 }

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

谢谢

PhpUnit::How can be __construct with protected variables tested?

(not always we should add public method getVal()- soo without add method that return protected variable value)

Example:

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

Edit:

also exist problem to test in function that return void


Edit2:

Example why we need test __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);
     }
 }

test run ok, but Example class "constructor" wasn't created!

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

盛夏已如深秋| 2024-10-23 09:48:30

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

The main goal of unit testing is to test interface By default, you should test only public methods and their behaviour. If it's ok, then your class is OK for external using. But sometimes you need to test protected/private members - then you can use Reflection and setAccessible() method

安静 2024-10-23 09:48:30

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

Create a derived class that exposes the value that you want to test.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文