2017-04-12 56 views
0

我正在開發一個庫以方便測試。在PHPUnit引導中加載文件/單例

我需要在引導文件中加載一次文件,該文件用於多個測試類和測試。該文件不會更改狀態。

解決這個問題的一種方法是將單例放入bootstrap中,然後在我的測試中訪問它。另一種方法是使用setUpBeforeClass在每個套件中讀取一次文件,但我不想這麼做,因爲它將在每個測試類中一次讀取文件,而不是整個測試套件中的一次。

這工作在我的工作機器上,但是,在我的家庭安裝中,singleton始終爲NULL。我在兩個版本上都使用PHP 7.1,並且它們都是最新的PHPUnit。

我似乎沒有在我的家用機器上以相同的方式訪問我的引導文件中的任何變量。即使我使用preserveGlobals$GLOBALS也完全被擦除。

我想保留我的單身人士,因爲雖然它可能會設置一些人,它運作良好,只存在於純粹的測試方式。但是,如果我的問題有一個經過規定的替代方案,我希望這樣做。

回答

0

我在phpstorm中設置了一個默認引導文件(testbootstrap.php),然後我編寫了另一個引導文件(testbootstrap2.php),並在phpunit.xml中指向它。如果你這樣做,phpunit.xml 中的引導將被忽略

我的原始引導沒有做單身對象,只包括自動加載器。

所以我把它關掉了。那是我生命中的兩個晚上了。我可以推薦你不要使用該功能,因爲在我看來,這並不是真正的「默認」,因爲提供不同的文件並不會覆蓋它。我不知道它是否與默認配置文件不同。

但我仍然喜歡jetbrains的東西。

oops

1

作曲,這是你會使用什麼來自動加載你的庫和項目本身的類,可以設定爲在composer.json autoload section自動(無條件)包含文件。

{ 
    "autoload": { 
     "files": ["src/MyLibrary/functions.php"] 
    } 
} 

這裏,給定路徑的functions.php文件將被自動拉入。 "autoload-dev": { "files": [...] }部分也提供相同的配置。

+0

這是一個很好的電話,謝謝 –