加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何测试设置受保护属性的构造函数?

发布时间:2020-12-13 22:03:05 所属栏目:PHP教程 来源:网络整理
导读:好吧,我是单位测试新手(使用phpUnit),刚开始测试我的一类. 实际构造函数如下所示: /** * Loads configuration. */function __construct() { $config = Kohana::$config-load('koffee'); $this-_table_name = $config-table_name; $this-_table_columns = $c
好吧,我是单位测试新手(使用phpUnit),刚开始测试我的一类.

实际构造函数如下所示:

/**
 * Loads configuration.
 */
function __construct() {

    $config =
        Kohana::$config->load('koffee');

    $this->_table_name = $config->table_name;
    $this->_table_columns = $config->table_columns;

}

它基本上从另一个文件获取配置,并将其设置为该对象的受保护属性.

以下是单元测试的外观(它没有完成,这就是我需要帮助的地方):

/**
 * Tests that config is loaded and correct.
 */
function testConfigIsLoadedAndCorrect() {

    $object = new Model_Article();

    $config = Kohana::$config->load('koffee');

    // Compare object's **protected** properties to local `$config`. How?!

}

问题是属性受到保护,我无法轻易访问它们……

我目前看到的可能的解决方案:

>改变属性的可见性(我不喜欢这个),
>添加,所谓的“getters”到I类测试 – 而不是单元测试(我不喜欢这个);

可能这对你很有意思,但是,正如我所说,我是单位测试的新手.任何帮助非常感谢.

解决方法

单元测试是关于单元测试.受保护的成员不是单元的公共接口的一部分,这是编写单元测试时应该关注的所有内容.

您不测试单元的内部内部,但它可以按预期工作.

如果您不想这样做,可以使用Serialization-Docs,casting to array和Reflection-Docs检查对象的受保护/私有属性或执行对象的受保护/私有方法.

另见:PhpUnit private method testingSO Q&A

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读