laravel使用資料庫測試注意事項
阿新 • • 發佈:2020-04-12
相對於其它測試,資料庫測試可以說是相對複雜繁瑣的,因為資料庫測試不可避免地會涉及到資料庫的增刪改查,而這些操作會影響資料庫的資料,而我們測試最忌諱的就是修改了資料的測試,因為這樣的話下次測試的時候,可能測試結果就會發生改變。
慶幸的是,laravel為我們提供了非常簡潔的資料庫測試方法,而且不會影響原資料。
use DatabaseMigrations
通過使用轉移表,我們可以對資料進行。不過這就要求我們的資料是通過migration
來生成的,如果直接在資料庫建立的話,我們進行測試的時候就會提示:
SQLSTATE[HY000]: General error: 1 no such table: exchange_code
我們可以看下DatabaseMigrations的原始碼,可以看到它是trait,它會在執行測試之前
migrate:fresh
執行測試之後
migrate:rollback
這樣的話就保證我們對資料庫的操作都會進行回滾。
注意事項
這裡的migrate:fresh
會刪除掉所有表,然後重建資料.
use RefreshDatabase
這種方式回去判斷是否是記憶體資料測試,如果是的話,因為是在記憶體操作,不影響資料庫。
如果是mysql等資料庫,它會啟用事務,也就是我們測試的資料不會真的提交,測試完畢後,進行回滾,然後提交,也就是相當於我們對資料庫什麼也沒做。
測試資料庫的時候,我們都是使用工廠進行建立資料,否則你會發現即使資料庫有資料,也是空的。
public function testGet() { factory(Exchange::class)->create(); $exchange = Exchange::select('code')->where('status',0)->first(); $code = $exchange->code; $this->assertDatabaseHas('exchange_code',[ 'code' => $code,]); }
總結
到此這篇關於laravel使用資料庫測試注意事項的文章就介紹到這了,更多相關laravel資料庫測試內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!