假设我有一个Config类型的对象,它或多或少存储了一堆键/值对。如果值是一个数组,它会将数组转换为一个新的Config实例,并将数组的值存储在其中。当然,这可以无限期地在多个层面上进行。
嘲笑这种类型的对象的最佳方法是什么?我是PHPUnit的新手,所以很可能存在一个非常简单的解决方案,但目前我不确定如何进行。
根据我迄今为止的经验,创建Config的mock并不会传播到包含的Config对象(在我的__set()魔术方法中,当它到达$data
中的嵌套数组时,它基本上是在调用new self($array)
。
下面是一个对象应该如何表现的例子:
$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"
编写测试的问题没有太多上下文,但我的理解是,从最简单的角度来看,您希望能够浏览"->"以达到您想要的值。
研究使用新的StdClass
例如
$config = new StdClass;
$config->three = new StdClass;
$config->three->a = 'alpha';