2012-08-27 30 views
0

假設我有一個Config類型的對象,它或多或少地存儲了一堆鍵/值對。如果該值是一個數組,它會將該數組轉換爲一個新的Config實例,將該數組的值存儲在其中。當然,這可以在多個層面上無限期地繼續下去。PHPUnit - 模仿相同類型的嵌套對象

什麼是嘲笑這種類型的對象的最佳方法?我對PHPUnit相當陌生,所以很可能存在一個非常簡單的解決方案,但目前我不知道如何繼續。

根據我的經驗,到目前爲止,創建配置的模擬不會傳播到包含的配置對象,以及(在我的__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" 
+0

必須調用'$這個 - > getMock'每個模擬實例,但是'Config'直接使用'new'。無論如何,你需要設定預期。你能否提供一個你認爲需要模擬的範例測試?看起來你應該直接使用這些對象,因爲它們是簡單的數據持有者。 –

+0

爲什麼你想嘲笑這個對象?它似乎只是一個數據對象。我會創建一個新的真正的配置對象,並傳遞一些假數據。 – Aine

回答

0

沒有多少背景的問題編寫測試,但我的理解是這是最簡單的術語,你希望能夠瀏覽' - >'以達到您想要的值。

考慮使用新的一個StdClass

例如

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