2011-10-09 82 views
0

在過去的幾天中,我讀了很多關於依賴注入的內容。 現在,因爲我想升級我的phpunit技能,我正在考慮如何實現這個DI。在我的單元測試中。(PHP)使用依賴注入(DI)進行單元測試

說我有兩個對象:

class Event{ 
} 

class Shift{ 
    public function __construct(Event $e) 
    { 
     (...) 
    } 
} 

該如何理解基本DI。 現在我想編寫一個測試爲我的轉變的構造函數:

class ShiftTest extends 
    \ModelTestCase 
{ 
    public function testCanCreateShift() 
    { 
     $e = new \Js\Entity\Event(); 
     $this->assertInstanceOf('JS\Entity\Shift', new \JS\Entity\Shift($e)); 
    } 
} 

但現在我不想在這裏定義一個完整的事件對象。那麼在phpUnit中創建我的事件對象的建議方式是什麼?

+1

*(參考)* http://www.phpunit.de/manual/current/en/test-doubles.html – Gordon

回答

2

這是什麼嘲笑,存根(stub)。等等。你創建一個SUT(系統在測試中),並嘲笑所有的依賴關係。 如果沒有DI,你將無法做到這一點。

+0

但我應該使用存根還是模擬? – sanders

+3

最大的區別是stubs測試狀態(即,在我做x之後,y的狀態將是z),並且嘲諷測試行爲(即,如果我做x,y會發生)。 這是關於這個問題的強大文章:http://martinfowler.com/articles/mocksArentStubs.html – blockhead