發表文章

目前顯示的是 十月, 2018的文章

如何正確在 Laravel 撰寫 PHPUnit 單元測試(Unit Test)

本篇文章內容主要參考自 LaracastsLaravel 5.4 From Scratch: Testing 101,並且替換掉舊有寫法,改寫成新版(Laravel 5.6)的版本。我們會撰寫一個簡單的 Unit Test 測試,可以在獨立的測試資料庫中測試 model 操作 CRUD,同時不會因為測試 Create 操作而造成資料庫無限肥大下去。建立測試案例先建立一個測試案例,本篇以單元測試為例建立一個 PostTest.php。# Create a test in the Unit directory... php artisan make:test PostTest --unit 規劃測試內容例如我們想要測試以下 Post model 的 method 是否正常:# app/Post.phppublicstaticfunctionarchives(){returnstatic::selectRaw('year(created_at) year, monthname(created_at) month, count(*) published')->groupBy('year','month')->orderByRaw('min(created_at) desc')->get()->toArray();}我們可以先依據 Given-When-Then 格式來撰寫註解,規劃好我們要寫的測試內容。關於 Given-When-Then 可以參考本篇文末 延伸閱讀 段落的整理。# tests/Unit/PostTest.phppublicfunctiontestArchives(){// Given I have two records in the database that art posts,// and each one is posted a month apart.// When I fetch the archives.// Then the response should be in the proper format.}建立測試資料在這裡,我們需要兩筆資料來測試。這時我們可以使用 Model Factories 來產生我們需要的測試資料到資料庫中。關於 Mod…