iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 18
0
Software Development

如何一步步實踐TDD (測試驅動開發)系列 第 18

TDD 實戰 D4:Laravel 資料庫 (3)

我們來把昨天未完成的最後一步補上:自動建立測試用的資料庫檔案。

原本以為會非常複雜,像是判斷資料庫存不存在...等等,沒想到 Laravel 已經一鍵處理了。

  • 關於 如何使用範例程式碼,請參考 TDD 實戰 D1
    • 本篇版本包含:4d

記憶體 Memory

由於測試用的資料庫並不需要效能太高,所以我們在昨天選用了 sqlite,sqlite 只要建立了檔案就可以當作資料庫使用。

同時測試用的資料庫,並不需要被保存。

既然如此,有個方案是把這個測試用的,放在記憶體裡面,(據說還能增加測試的效率)。

phpunit.xml

只要新增一個環境設定,就能使用記憶體來做測試。

<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

雖然本篇的目的已經完成,但是還是必須要提到,RefreshDatabase 這一位功臣。

:memory: 可以正常運作,其實是仰賴了上一篇提到的 RefreshDatabase,

其中的私有函數 usingInMemoryDatabase() 協助判斷了有無設定 :memory:,是的話會做相應的記憶體操作,讓我們鼓掌感謝他。


上一篇
TDD 實戰 D3:Laravel 資料庫 (2)
下一篇
TDD 實戰 D5:Laravel 新增貼文路由
系列文
如何一步步實踐TDD (測試驅動開發)30

尚未有邦友留言

立即登入留言