我們來把昨天未完成的最後一步補上:自動建立測試用的資料庫檔案。
原本以為會非常複雜,像是判斷資料庫存不存在...等等,沒想到 Laravel 已經一鍵處理了。
4d
。由於測試用的資料庫並不需要效能太高,所以我們在昨天選用了 sqlite,sqlite 只要建立了檔案就可以當作資料庫使用。
同時測試用的資料庫,並不需要被保存。
既然如此,有個方案是把這個測試用的,放在記憶體裡面,(據說還能增加測試的效率)。
只要新增一個環境設定,就能使用記憶體來做測試。
<php>
<env name="DB_CONNECTION" value="sqlite" force="true" />
<env name="DB_DATABASE" value=":memory:" force="true" />
</php>
( $ git checkout 4d
)
我們將 DB_DATABASE
參數設定為 :memory:
。
此時再執行測試,就完全能夠自動運作了,原本的 database/database.sqlite
也可以刪掉了。
雖然本篇的目的已經完成,但是還是必須要提到,RefreshDatabase 這一位功臣。
:memory:
可以正常運作,其實是仰賴了上一篇提到的 RefreshDatabase,
其中的私有函數 usingInMemoryDatabase() 協助判斷了有無設定 :memory:
,是的話會做相應的記憶體操作,讓我們鼓掌感謝他。