2011-08-12 140 views
0

假設我正在做類似下面的事情,並且我想要測試以確保每個Letter正在使用正確的$data進行初始化。我該如何測試這種代碼?

public someMethod() 
{ 
    for ($i = 0; $i < 5; $i++) 
    { 
     $letter = new Letter($data); 
     $letter->send(); 
    } 
} 

我想指出的主要問題是,有在someMethod()通話完全封裝5個字母。他們永遠不會離開方法的範圍,所以我不能測試返回值,並且有多個,所以依賴注入似乎不是一個選項。

回答

4

依賴注入是可能的:

public someMethod($letterFactory) 
{ 
    for ($i = 0; $i < 5; $i++) 
    { 
     $letter = $letterFactory->create($data); 
     $letter->send(); 
    } 
} 

(僞代碼,因爲我不知道這是什麼語言應該是)

單元測試可以然後提供一個模擬實現的$letterFactory,其產生模擬Letter對象。