2014-04-25 36 views
1

我試圖測試一個類,它實現了一個在類包的範圍之外定義的接口(即,我在集成過程中使用composer將它作爲依賴項進行了抽取)。PHP單元測試:如何測試從另一個包實現接口的類?

我想測試這個具體類,而不必拉入它所依賴的接口。無論如何要在php單元測試中測試這個嗎?

目前我甚至不能實例化一個實例,因爲顯然找不到接口。

+0

爲什麼不簡單地在測試中包含該依賴項?我的意思是,你的班級依賴於它,所以在測試中包括它沒有什麼不對。 – nietonfir

+0

那不是我正在測試的方法。應該嘲笑所有依賴關係,並且測試包單元不依賴於這些依賴關係。 –

+0

所以,你想測試你的類依賴於外部依賴,而不包括那個依賴。那麼,我希望你看到這個陳述中的諷刺。 ;-) – nietonfir

回答

4

從這個意義上講,你的類不是依賴的接口......沒有什麼可以模擬的。您只需確保該類是該類的測試中的接口實例。

你需要改變一些關於你的測試環境的知識,以便界面可用來測試你的類。以便您可以實例化並測試接口指定的方法的行爲。

依賴注入是關於您的代碼不需要代碼的對象。接口或抽象類不是依賴關係。即使你的代碼「依賴於」現有的東西。

依賴性是您類需要做的事情的外部對象。接口和抽象類定義你的類是什麼。

+0

,這比nietonfir的'有用'評論更有意義。我遇到的問題是外部包提供了一個我必須實現的接口。我希望能夠單獨測試,而不必牽扯所有的依賴關係 –

+0

如果導入外部軟件包確實是一種痛苦,那麼可以在聲明測試類之前在測試文件中創建接口。儘管如果您不小心,嘗試重新聲明相同的界面可能會導致問題。 – Schleis

+1

但是這不會消除測試的一些有用性嗎?如果(實際)界面改變會怎麼樣? – nietonfir