發表文章

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

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

本篇文章內容主要參考自 Laracasts 的 Laravel 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.php public static function archives ( ) { return static : : 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.php public function testArchives ( ) { // Given I have two records in the database that art posts, // and each one is posted a month apart. // When I f