PHPUnit - 模拟相同类型的嵌套对象

时间:2012-08-27 22:12:52

标签: php unit-testing phpunit

假设我有一个Config类型的对象,它或多或少存储了一堆键/值对。如果值是数组,则将数组转换为新的Config实例,并将数组的值存储在其中。当然,这可以无限期地持续多个层次。

模仿这种类型对象的最佳方法是什么?我是PHPUnit的新手,因此很可能存在一个非常简单的解决方案,但目前我不确定如何继续。

根据我迄今为止的经验,创建Config的模拟也不会传播到包含的Config对象(在我的__set()魔术方法中,当它到达嵌套数组时基本上调用new self($array) $data

以下是对象应如何表现的示例:

$data = array(
    'one' => 'unus',
    'two' => 'duo',
    'three' => array(
        'a' => 'alpha',
        'b' => 'beta'
    )
);

$config = new Config($data);

// I should be able to do this:
echo $config->three->a;          // Outputs "alpha"
echo get_class($config->three);  // Outputs "Config"

1 个答案:

答案 0 :(得分:0)

编写测试的问题没有太多背景,但我的理解是最简单的术语,你希望能够浏览' - >'达到你想要的价值。

了解使用新的StdClass

例如

$config = new StdClass;
$config->three = new StdClass;
$config->three->a = 'alpha';