gpt4 book ai didi

php - 如何测试设置 protected 属性的构造函数?

转载 作者:可可西里 更新时间:2023-11-01 00:01:03 24 4
gpt4 key购买 nike

好吧,我是单元测试(使用 phpUnit)的新手,刚开始测试我的一个类。

实际构造函数如下所示:

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

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

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

}

它基本上是从另一个文件获取配置并将其设置为该对象的 protected 属性。

这是单元测试的样子(它还没有完成,这就是我需要帮助的地方):

/**
* 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?!

}

问题是属性是 protected ,我不能那么容易地访问它们...

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

  1. 更改属性的可见性(我不喜欢这样),
  2. 向我测试的类添加所谓的“ setter/getter ”——而不是单元测试(我也不喜欢这样);

您可能觉得这很有趣,但是,正如我所说,我是单元测试的新手。非常感谢任何帮助。

最佳答案

单元测试是关于单元 测试。 protected 成员不是单元的公共(public)接口(interface)的一部分,这是您在编写单元测试时需要关心的全部内容。

您不测试单元的内部结构,而是测试它是否按预期工作。

如果你无论如何都想做这样的事情,你可以使用Serialization­Docs , casting to arrayReflection­Docs检查对象的 protected /私有(private)属性或执行对象的 protected /私有(private)方法。


另见: PhpUnit private method testingSO Q&A

关于php - 如何测试设置 protected 属性的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com