2017-05-12 46 views
1

由於更多人嘗試測試抽象類,因此不要找到此解決方案。這不是我想要的。PHPSpec - 使用AbstractSpec進行測試

我有模式策略,所有的類都應該實現接口。 想要添加基本規格,其餘的應該擴展並添加自己的東西。

我應該在所有規格中重複我的代碼?現在

,我有2到策略規格:

function it_should_implements_LoadStrategyInterface() 
{ 
    $this->shouldBeAnInstanceOf(LoadStrategyInterface::class); 
} 

如何不重複自己?

我嘗試做AbstractStrategy,但得到

Class 'spec\LoadStrategy\Strategies\AbstractStrategy' not found

我失去了一些東西?或者像這樣的代碼,是不是自動加載?或者,也許這是不好的做法?

回答

1

是的,你應該在每個規範中重複它。解決方法是讓你的Spec文件擴展另一個Spec文件(你有這個常見的例子),它本身擴展了基本的phpspec類。順便說一句,我會在每個具體的類中明確描述(測試)這個約束。

+0

後五個類與一個接口,你會有5個副本。任何關於該界面的測試,你都會複製。而且你接受,在界面的任何變化中,你將不得不改變5個規格和5個類。沒有沒有問題呢?幹? – timiTao

+0

@timiTao你只是測試一個接口的實現。認爲這不是什麼大問題,因爲代碼也是文檔,在這種情況下,我更願意明確這一點。順便說一句,如建議,你可以寫一個超類,並在每個spec文件中擴展。 – DonCallisto